按文件夹中创建文件的顺序列出文件

时间:2012-11-07 21:18:37

标签: java file io

  

可能重复:
  How do I find the last modified file in a directory in Java?

我正在尝试按照创建顺序从目录中检索文件。这已成为使用Java的问题。 File类中的listFiles()方法不保证返回文件的顺序。是否有其他方法可以按照目录中创建文件的顺序检索文件?

5 个答案:

答案 0 :(得分:1)

您需要根据File.lastModified

使用array of filesFile.listFiles()返回的Comparator进行排序

答案 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());