可能重複:
How do I find the last modified file in a directory in Java?的順序清單文件中,他們在文件夾中創建
我試圖從順序目錄中創建它們檢索文件。這已經成爲使用Java的一個問題。 File類中的listFiles()方法不保證文件返回的順序。是否有任何其他方式通過它們在目錄中創建的順序來檢索文件?
可能重複:
How do I find the last modified file in a directory in Java?的順序清單文件中,他們在文件夾中創建
我試圖從順序目錄中創建它們檢索文件。這已經成爲使用Java的一個問題。 File類中的listFiles()方法不保證文件返回的順序。是否有任何其他方式通過它們在目錄中創建的順序來檢索文件?
只是打敗我吧!只有當文件自創建以來未被修改時纔有效,當然... – DNA
我已經這樣做了,是最後一次修改日期,當文件被ftp到這個文件夾時創建日期的可靠來源? –
什麼是'ftp'd'?你是否嘗試過使用它?它給你正確的結果嗎? –
的基礎上,使用Comparator
創建Set<File>
未分類的地方添加了所有File
S(unsorted.addAll(dir.listFiles()
) 然後進行排序File.listFiles()
您array of files
返回,創建一個新的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);
新 集將按日期排序。
不,它不,但Arrays.sort方法確實需要Comparator。我下面定義一個簡單的爲您和自己敲出來:
new Comparator<File>() {
public int compare(File m1, File m2) {
return m1.lastModified().compare(m2.lastModified());
}
});
希望這有助於...
正如你已經想通了listFiles
不保證秩序。正如this question中所解釋的那樣,您可以通過它的屬性來查找創建時間並使用類似thia的東西對其進行排序。
如果您查看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());
OP正在尋找*創建時間*,*沒有修改時間*。看到我的回答如下 –