如何在 Java 中根据文件类型对文件名进行排序

Posted

技术标签:

【中文标题】如何在 Java 中根据文件类型对文件名进行排序【英文标题】:How to sort file names with its type of file in Java 【发布时间】:2018-03-07 04:08:59 【问题描述】:

我有一个文件夹,我可以从中获取所有文件列表。

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

filesPaths 包含所有文件和文件夹的列表,我要对文件进行排序首先和文件夹之后。

【问题讨论】:

Comparator<File> for "directories-first" order 的可能重复项,甚至 ***.com/questions/32312738/… 都有 Java 8 解决方案。 【参考方案1】:

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

要对目录进行排序最后,通过调用File.isDirectory() 来标识一个目录,如果它是一个目录,则返回true,然后使用Boolean.compare(boolean x, boolean y) 按布尔值排序(false 排序前true)。

使用 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()));

【讨论】:

以上是关于如何在 Java 中根据文件类型对文件名进行排序的主要内容,如果未能解决你的问题,请参考以下文章

根据图像类型对图像进行排序,并使用 typescript 将它们放在相应的文件夹中

如何使用qsort根据字节对包含路径名/文件的char进行排序?

如何使用 xml 配置文件、JAVA、Spring 安全性对 LDAP 用户进行身份验证

如何根据布尔属性对对象数组进行排序?

如何在java中对不同的数据类型进行排序并将它们打印在一个表中? (使用方法重载)

如何根据unix中的时间戳对文件进行排序? [关闭]