0
我有一個文件夾,可以從中獲取文件的所有列表。如何使用Java中的文件類型對文件名進行排序
File []filesPaths = filePath.listFiles((dir, name) -> !name.equals(".DS_Store"));
filesPaths包含文件和文件夾,這是我想對文件進行排序的所有列表至上和之後的文件夾。
我有一個文件夾,可以從中獲取文件的所有列表。如何使用Java中的文件類型對文件名進行排序
File []filesPaths = filePath.listFiles((dir, name) -> !name.equals(".DS_Store"));
filesPaths包含文件和文件夾,這是我想對文件進行排序的所有列表至上和之後的文件夾。
要對數組進行排序,請使用Arrays.sort(T[] a, Comparator<? super T> c)
。
排序目錄最後,通過調用File.isDirectory()
,返回true
如果它是一個目錄標識目錄,以及(true
前false
排序)使用Boolean.compare(boolean x, boolean y)
由布爾值進行排序。
使用Java 8 Lambda表達式,它的代碼只是一個行:
// Sort directories last
Arrays.sort(filesPaths, (a,b) -> Boolean.compare(a.isDirectory(), b.isDirectory()));
如果要排序的目錄第一,只需翻轉a
和b
在調用compare()
:
// Sort directories first
Arrays.sort(filesPaths, (a,b) -> Boolean.compare(b.isDirectory(), a.isDirectory()));
[比較器用於「目錄優先」順序](https://stackoverflow.com/questions/4440765/comparatorfile-for-directories-first-order)或甚至https:// stackoverfl ow.com/questions/32312738/how-to-sort-listfile-to-list-directories-first-and-grouping-files-by-directory有一個Java 8解決方案。 –
nullpointer