在Java Sort中,如何按创建日期对File.listFiles()的结果进行排序?

我确实有:

files = reportFolder.listFiles(new ReportFolderFilter()));
Collections.reverse(files);


但这只会按相反的字母顺序对它们进行排序,而不是按创建日期排序。

我想要一个不依赖Apache Commons的解决方案。

最佳答案

您可以使用Collections.sort或Arrays.sort或List.sort

您可以使用java nio Files获取文件的创建日期。 readAttributes()

Arrays.sort(files, new Comparator<File>() {
        @Override
        public int compare(final File o1, final File o2) {
            try {
                BasicFileAttributes f1Attr = Files.readAttributes(Paths.get(f1.toURI()), BasicFileAttributes.class);
                BasicFileAttributes f2Attr = Files.readAttributes(Paths.get(f2.toURI()), BasicFileAttributes.class);
                return f1Attr.creationTime().compareTo(f2Attr.creationTime());
            } catch (IOException e) {
                return 0;
            }
        }
    });


或使用Comparator.comparing:

Comparator<File> comparator = Comparator.comparing(file -> {
    try {
        return Files.readAttributes(Paths.get(file.toURI()), BasicFileAttributes.class).creationTime();
    } catch (IOException e) {
        return null;
    }
});

Arrays.sort(files, comparator);

关于java - 如何按创建日期对File.listFiles()的结果进行排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49658963/

10-09 01:30