可能重复:
How do I find the last modified file in a directory in Java?
我正在尝试按照创建顺序从目录中检索文件。这已成为使用Java的问题。 File类中的listFiles()方法不保证返回文件的顺序。是否有其他方法可以按照目录中创建文件的顺序检索文件?
答案 0 :(得分:1)
答案 1 :(得分:1)
不,它没有,但Arrays.sort方法确实需要Comparator。我在下面为你定义了一个简单的一个,然后把自己搞定:
new Comparator<File>() {
public int compare(File m1, File m2) {
return m1.lastModified().compare(m2.lastModified());
}
});
希望这会有所帮助......
答案 2 :(得分:0)
创建一个未分类的Set<File>
,其中添加了所有File
s(unsorted.addAll(dir.listFiles()
)
然后,使用TreeSet
创建一个新的Set<File> sorted=new TreeSet(Comparator<File> byDate)
,并使用自定义比较器比较日期。
Comparator<File> byDate=new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
return new Date(o1.lastModified()).compareTo(new Date(o2.lastModified()));
}
};
并且做:
sorted.addAll(unsorted);
新的 套装将按日期订购。
答案 3 :(得分:0)
正如您已经发现listFiles
不保证和订购。正如this question中所述,您可以获取其属性以查找创建时间并使用thia之类的内容对其进行排序。
答案 4 :(得分:0)
如果您查看File的Java API,则会有一个名为lastModified
的方法。如果按该属性对文件进行排序,则应该得到您想要的内容。我很确定在创建文件之后无法安排文件,因为每个实现都是特定于操作系统的。
所以如果你做了一个这样的比较器:
public class FileComparator implements Comparator<File> {
public int compare(File x, File y) {
Long.compare(x.lastModified(), y.lastModified());
}
}
可以像这样使用:
File file = new File("...");
List<File> files = Arrays.asList(file.listFiles());
Collections.sort(files, new FileComparator());