【问题标题】:How to sort files from a directory by date in java? [duplicate]如何在java中按日期对目录中的文件进行排序? [复制]
【发布时间】:2011-06-12 07:02:03
【问题描述】:

我有一种方法可以从目录中的文件中读取内容。但出于功能原因,必须从最旧的文件开始(由属性 lastmodified 表示)并以最新的文件结束。

这是我打开和读取文件的代码:

        FilenameFilter filter = new FilenameFilter() {
        public boolean accept(File dir, String name) {
            return name.matches("access_log.*");
        }
    };

    File folder = new File("/home/myfiles");
    File[] listOfFiles = folder.listFiles(filter);

    for (int i = 0; i < listOfFiles.length; i++) {
        String sFileName = listOfFiles[i].getName();
        File accessLogFile = new File(aLog.getPath(), sFileName);
        long time=accessLogFile.lastModified();
        // do something with the file
    }

有没有人可以快速按日期对文件列表进行排序的解决方案?

【问题讨论】:

标签: java file sorting date


【解决方案1】:

Java 8

public static void sortOldestFilesFirst(File[] files) {
    Arrays.sort(files, Comparator.comparingLong(File::lastModified));
}

public static void sortNewestFilesFirst(File[] files) {
    Arrays.sort(files, Comparator.comparingLong(File::lastModified).reversed());
}

Java 7

public static void sortOldestFilesFirst(File[] files) {
    Arrays.sort(files, new Comparator<File>() {
        @Override
        public int compare(File a, File b) {
            return Long.compare(a.lastModified(), b.lastModified());
        }
    });
}

public static void sortNewestFilesFirst(File[] files) {
    Arrays.sort(files, new Comparator<File>() {
        @Override
        public int compare(File a, File b) {
            return Long.compare(b.lastModified(), a.lastModified());
        }
    });
}

【讨论】:

  • 您好,您可以将其通用化,这意味着您可以在 compare 方法中移除强制转换:Arrays.sort(files, new Comparator(){...})
  • 谢谢,伙计!它仍然有效!
  • 你让我开心:) 谢谢。
  • @PratikButani 很高兴你发现它很有用 :)
  • -1、1、0有什么用?
【解决方案2】:

您最好的选择是使用比较器。这里有一个类似的问题和答案...... Best way to list files in Java, sorted by Date Modified?

【讨论】:

    【解决方案3】:

    我会使用 commons-io 中的 FileUtils 来取回文件集合。然后我会应用一个自定义比较器。这应该很容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-10
      • 2021-07-09
      • 1970-01-01
      相关资源
      最近更新 更多