在Java中,我可以在java中指定一個目錄並且它可以逐個讀取整個文件嗎?在一個文件夾中讀取整個文件
否則是否有辦法在java中讀取正則表達式文件?因此,如果該文件夾中的所有文件都始於gh001_12312 gh002_12312,gh003_12911,gh004_22222,gh005_xxxxx等
在Java中,我可以在java中指定一個目錄並且它可以逐個讀取整個文件嗎?在一個文件夾中讀取整個文件
否則是否有辦法在java中讀取正則表達式文件?因此,如果該文件夾中的所有文件都始於gh001_12312 gh002_12312,gh003_12911,gh004_22222,gh005_xxxxx等
的標準Java庫提供了獲得File
元件,其是在通過File#listFiles一個目錄的陣列的方法。 基本上:
File theDirectory = new File("/home/example");
File[] children = theDirectory.listFiles();
此外,存在一個重載方法,該方法允許指定的過濾器,其可用於在修剪列表中返回的元素。
File theDirectory = new File("/home/example");
File[] children = theDirectory.listFiles(new FileFilter(){
public boolean accept(File file) {
if (file.isFile()) {
//Check other conditions
return true;
}
return false;
}
});
如果您想根據文件名,做一些過濾以及再看看String,Pattern和Matcher。如果您知道只有文件或文件將遵循特定的命名約定,那麼還有一個File.listFiles(FilenameFilter)
選項,它只提供表示文件名的字符串。
是否有一種方法可以將BufferedReader讀取爲整個字符串,而不是執行input.readLine(),您必須逐行執行? – aherlambang 2011-02-25 06:42:56
@EquinoX,不是我所知道的。 – 2011-02-26 22:40:40
您可以使用以下方法的組合從commons-io。第一種方法使您可以選擇迭代目錄中的所有文件,並遞歸匹配特定的擴展名(還有另一種重載方法允許您提供自己的過濾器)。第二種方法以String對象的形式讀取文件的全部內容。
Iterator<File> iterateFiles(File directory,
String[] extensions,
boolean recursive)
String readFileToString(File file)
throws IOException
如果我不想使用commons-io – aherlambang 2011-02-25 05:47:14
你可以在File(isDirectory(),listFiles()),FileNameFilter和BufferedReader ....幫助下做到這一點。 /www.exampledepot.com/egs/java.io/GetFiles.html – 2011-02-25 05:59:44
我從@Tim德爾這裏重用代碼:
首先得到如圖@Tim本德爾所需的所有文件的列表(在這裏再次顯示了完整)。並且不需要第三方庫。
File theDirectory = new File("/home/example");
File[] children = theDirectory.listFiles(new FileFilter(){
public boolean accept(File file) {
if (file.isFile()) {
//Check other conditions
return true;
}
return false;
}
});
現在遍歷這個數組,並使用文件讀取java.nio
API在一個單一的去(不br.readLine()
)
public StringBuilder readReplaceFile(File f) throws Exception
{
FileInputStream fis = new FileInputStream(f);
FileChannel fc = fis.getChannel();
int sz = (int)fc.size();
MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
CharBuffer cb = decoder.decode(bb);
StringBuilder outBuffer = new StringBuilder(cb);
fc.close();
return outBuffer;
}
希望這有助於
@Andrew湯普森,很沒有道理的行爲。 – 2011-02-25 06:04:02
有些時候,有些功能可能是您以前從未知道的神奇功能,但其他功能也可以 – aherlambang 2011-02-25 06:08:40
我同意。就我個人而言,我並不知道@Pangea提到的API,並認爲它們看起來很有趣。 – 2011-02-25 06:35:46