2014-04-22 19 views
0

我想從文件夾中讀取文件到java,我找到了這個代碼段並使用它。無法讀取文件系列中的文件夾中的文件

File folder = new File("Z.."); 
    File[] listOfFiles = folder.listFiles(); 



for (int i = 0; i < listOfFiles.length; i++) { 
     File file = listOfFiles[i]; 
     if (file.isFile() && file.getName().endsWith(".txt")) { 
     String content = FileUtils.readFileToString(file); 

    } 

這工作正常,除非它不按順序檢索文件。我有文件編號文件0,文件1,文件2 .....文件10以及它如何檢索它文件0文件1文件10,然後文件2,我應該怎樣檢索它在適當的系列。 我應該使用別的東西嗎?我對此很陌生。

+0

是您的問題只是順序?如果是這樣的話,你應該在處理它之前應該Arrays.sort你的數組 –

+0

因爲這正是底層操作系統返回它們的方式,所以詞法排序。如果這不是您想要的順序,您需要獲取所有文件名,並按照您*要*的方式對其進行分類。 –

回答

0

有使用自定義比較排序文件的數組這裏的一個很好的例子: Best way to list files in Java, sorted by date last modified

你將不得不修改比較器的返回是沿

return f1.getName().compareTo(f2.getName()); 

,它應該是你正在尋找的。

如果所有的文件編號,你可能希望將文件名作爲整數比較:

return Integer.valueOf(f1.getName()).compareTo(Integer.valueOf(f2.getName())); 
0

正在按字母順序閱讀文件。按字母順序排列,10位在2之前,因爲兩者中的第一個字母首先被比較爲'1'和'2'。

要解決此問題,您可以解析數字,將每個數字鏈接到原始文件名,然後對數字進行排序並按新順序讀取它們。

+0

答案的第一段是可以的,雖然在技術上它是* lexicographical *。第二部分...不是很多。您只需用比較器對數組進行排序即可生成您想要的順序。 –

+0

我認爲我的解決方案比較簡單,不必創建一個按數字順序排序所有字符串的比較器,而不是詞法。 – numX

相關問題