如何在java中按日期对目录中的文件进行排序?

2022-09-02 09:06:18

我有一个从位于目录中的文件读取内容的方法。但是出于功能原因,有必要从最旧的文件(由上次修改的属性指示)开始,并以最新的文件结束。

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

        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
    }

有没有人有一个解决方案,如何按日期快速排序我的文件列表?


答案 1

爪哇 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());
        }
    });
}

答案 2

最好的选择是使用比较器。这里有一个类似的问题和答案...在Java中列出文件的最佳方法,按修改日期排序?