首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按照创建日期对File.listFiles()的结果进行排序?

如何按照创建日期对File.listFiles()的结果进行排序?
EN

Stack Overflow用户
提问于 2018-04-04 19:28:24
回答 1查看 2K关注 0票数 0

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

我确实有:

代码语言:javascript
复制
files = reportFolder.listFiles(new ReportFolderFilter()));
Collections.reverse(files);

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-04 19:41:36

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

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

代码语言:javascript
复制
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:

代码语言:javascript
复制
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);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49658963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档