2017-09-26 113 views
0

我有一个文件夹,可以从中获取文件的所有列表。如何使用Java中的文件类型对文件名进行排序

File []filesPaths = filePath.listFiles((dir, name) -> !name.equals(".DS_Store")); 

filesPaths包含文件和文件夹,这是我想对文件进行排序的所有列表至上和之后的文件夹。

+2

[比较器用于“目录优先”顺序](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

回答

0

要对数组进行排序,请使用Arrays.sort(T[] a, Comparator<? super T> c)

排序目录最后,通过调用File.isDirectory(),返回true如果它是一个目录标识目录,以及(truefalse排序)使用Boolean.compare(boolean x, boolean y)由布尔值进行排序。

使用Java 8 Lambda表达式,它的代码只是一个行:

// Sort directories last 
Arrays.sort(filesPaths, (a,b) -> Boolean.compare(a.isDirectory(), b.isDirectory())); 

如果要排序的目录第一,只需翻转ab在调用compare()

// Sort directories first 
Arrays.sort(filesPaths, (a,b) -> Boolean.compare(b.isDirectory(), a.isDirectory())); 
相关问题