为了账号安全,请及时绑定邮箱和手机立即绑定

按文件名对文件路径数组排序

按文件名对文件路径数组排序

繁星coding 2022-11-30 13:34:51
我用来directory.listFiles()从给定的目录结构中递归地获取文件列表。为此,我尝试使用以下代码,但它们都不起作用。    Arrays.sort(fList, Comparator.comparing(File::getName));     Arrays.sort(fList, NameFileComparator.NAME_COMPARATOR);文件应从所有子目录中按升序排列。
查看完整描述

3 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

File 是一个可比较的类,默认情况下按字典顺序对路径名进行排序。只需使用,

 Arrays.sort(fList);

如果你想对它们进行不同的排序,你可以定义你自己的比较器。


查看完整回答
反对 回复 2022-11-30
?
MMTTMM

TA贡献1869条经验 获得超4个赞

如果你想在树结构中递归地对所有文件路径进行排序,你可以尝试Files.walk使用sortedJava 8 流:


List<String> files = Files.walk(Paths.get("/tmp"))

                         .filter(Files::isRegularFile) // Check you have only file names

                         .map(Path::toString) // map to string

                         .sorted() // sort

                         .collect(Collectors.toList()); // create list

如果你想要不区分大小写的排序:


List<String> files = Files.walk(Paths.get("d:/tmp"))

                         .filter(Files::isRegularFile) // Check you have only file names

                         .map(Path::toString) // map to string

                         .sorted(Comparator.comparing(String::toLowerCase)) // sort case insensitive

                         .collect(Collectors.toList()); // create list


查看完整回答
反对 回复 2022-11-30
?
冉冉说

TA贡献1877条经验 获得超1个赞

要列出目录和子目录中的所有文件,请使用Apache Commons FilesUtil.listFiles方法


Collection<File> fCollection = FileUtils.listFiles(directory, null, true);

File[] fList = fCollection.toArray(new File[fCollection.size()]);

然后对数组进行排序,您可以使用


Arrays.sort(fList);


查看完整回答
反对 回复 2022-11-30
  • 3 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信