获取目录中按上次修改排序的文件?
问题内容:
在具有新I / O API的Java7中,是否有一种简便的方法可以按上次修改日期列出目录的内容?基本上,我只需要获取未修改时间最长的文件(按最后修改的升序排序,采用第一个文件名)。
问题答案:
并没有真正的“简便方法”,但是有可能:
List<Path> files = new ArrayList<>();
try(DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
for(Path p : stream) {
files.add(p);
}
}
Collections.sort(files, new Comparator<Path>() {
public int compare(Path o1, Path o2) {
try {
return Files.getLastModifiedTime(o1).compareTo(Files.getLastModifiedTime(o2));
} catch (IOException e) {
// handle exception
}
}
});
这将对文件排序最快,最后修改的文件最后排序。DirectoryStream
s不会遍历子目录。