可能重复:
如何在 Java 目录中找到最后修改的文件?
我正在尝试按照创建顺序从目录中检索文件。这已成为使用 Java 的问题。File 类中的 listFiles() 方法不保证返回文件的顺序。有没有其他方法可以按照在目录中创建的顺序来检索文件?
可能重复:
如何在 Java 目录中找到最后修改的文件?
我正在尝试按照创建顺序从目录中检索文件。这已成为使用 Java 的问题。File 类中的 listFiles() 方法不保证返回文件的顺序。有没有其他方法可以按照在目录中创建的顺序来检索文件?
您需要使用 a对array of files
退回的商品进行排序File.listFiles()
Comparator
File.lastModified
不,它没有,但是Arrays.sort方法确实需要一个Comparator。我在下面为您定义了一个简单的方法,然后将您自己淘汰:
new Comparator<File>() {
public int compare(File m1, File m2) {
return m1.lastModified().compare(m2.lastModified());
}
});
希望这可以帮助...
创建一个Set<File>
未排序的添加所有File
s ( unsorted.addAll(dir.listFiles()
) 然后,使用自定义比较器比较日期创建一个新的TreeSet
using 。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);
新套装将按日期订购。
如果您查看 Java API for File,有一个名为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());