2013-01-25 58 views
1

如何獲取java.io.File.list()與Windows資源管理器中的順序相同?如何獲取java.io.File.list()與Windows資源管理器中的順序相同

在程序中,我創建了Temp文件夾,例如Temp1Temp2等。但是當我使用java.io.File.list()來檢索文件夾列表時,它給出了Temp1,Temp10等等。

請告訴如何獲得與在Windows資源管理器中顯示的訂單相同的訂單清單?

謝謝

+0

用'Collections.sort()'創建你自己的比較器和排序列表? – Andremoniy

+1

但是需要哪種類型的排序才能將列表與Windows命令進行匹配? – Kishore

+1

@Kishore:問題根本不明確。 Windows可以按名稱,大小,類型,日期,... – jlordo

回答

7

Windows資源管理器默認顯示按名稱排序的文件。查看javadoc的File.list()

無法保證結果數組中的名稱字符串將以任何特定順序出現;他們並不特別保證按字母順序出現。

因此,使用File.list()獲取文件列表後,您需要通過文件名Arrays.sort(file.list())排序此獲得所需要的順序。

+1

它給出了與java默認順序相同的順序。 Plz只給出有效的答案。 – Kishore

+0

這是不正確的。 Windows資源管理器使用稱爲自然排序的排序,將數字的部分名稱考慮在內。 – wumpz

0

您需要編寫自己的比較器。比較器需要分割文件名字符串,將它們分成連續的非數字字符和數字字符序列。然後對序列進行排序,在比較之前將一系列數字字符轉換爲整數。另外,如果整數相等(由於前導零),則在較短序列之前排序較長的數字序列。

0

這是一個稱爲自然排序的特定窗口排序算法的實現。

Java - Sort Strings like Windows Explorer

總之它分裂兩個字符串的信比較 - 數字部件,這部分以特定的方式來實現這種排序的比較。

相關問題