在Java中列出文件的最佳方法,按修改日期排序?

2022-08-31 05:27:16

我想获取目录中的文件列表,但我想对其进行排序,以便最旧的文件排在第一位。我的解决方案是调用File.listFiles,然后基于File.lastModified来诉诸列表,但我想知道是否有更好的方法。

编辑:根据建议,我目前的解决方案是使用匿名比较器:

File[] files = directory.listFiles();

Arrays.sort(files, new Comparator<File>(){
    public int compare(File f1, File f2)
    {
        return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
    } });

答案 1

我认为你的解决方案是唯一明智的方法。获取文件列表的唯一方法是使用 File.listFiles(),文档指出,这不保证返回文件的顺序。因此,您需要编写一个使用 File.lastModified()比较器,并将其与文件数组一起传递给 Arrays.sort()。


答案 2

自 Java 8 以来的优雅解决方案:

File[] files = directory.listFiles();
Arrays.sort(files, Comparator.comparingLong(File::lastModified));

或者,如果您希望它按降序排列,只需将其反转:

File[] files = directory.listFiles();
Arrays.sort(files, Comparator.comparingLong(File::lastModified).reversed());