如何按创建日期对 File.listFiles() 的结果进行排序?
How do I sort results of File.listFiles() by creation date?
在 Java 中排序 如何按创建日期对 File.listFiles()
的结果进行排序?
我确实有:
files = reportFolder.listFiles(new ReportFolderFilter()));
Collections.reverse(files);
但这只会按逆向字母顺序而不是创建日期对它们进行排序。
我想要一个不依赖 Apache Commons 的解决方案。
您可以使用 Collections.sort 或 Arrays.sort 或 List.sort
您可以使用 java nio 文件获取文件的创建日期。读取属性()
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()
的结果进行排序?
我确实有:
files = reportFolder.listFiles(new ReportFolderFilter()));
Collections.reverse(files);
但这只会按逆向字母顺序而不是创建日期对它们进行排序。
我想要一个不依赖 Apache Commons 的解决方案。
您可以使用 Collections.sort 或 Arrays.sort 或 List.sort
您可以使用 java nio 文件获取文件的创建日期。读取属性()
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);