作成された順序でディレクトリからファイルを取得しようとしています。これは、Javaを使用する際の問題になっています。FileクラスのlistFiles()メソッドは、ファイルが返される順序を保証するものではありません。ディレクトリに作成された順序でファイルを取得する他の方法はありますか?
1271 次
5 に答える
1
に基づいてを使用してarray of files
返品を並べ替える必要がありますFile.listFiles()
Comparator
File.lastModified
于 2012-11-07T21:21:28.140 に答える
1
いいえ、そうではありませんが、Arrays.sortメソッドはComparatorを取ります。私はあなたのために簡単なものを以下に定義し、あなた自身をノックアウトします:
new Comparator<File>() {
public int compare(File m1, File m2) {
return m1.lastModified().compare(m2.lastModified());
}
});
お役に立てれば...
于 2012-11-07T21:24:24.703 に答える
0
すべてのs( )Set<File>
を追加するソートされていないものを作成します。次に、日付を比較するカスタムコンパレータを使用して新しいusingを作成します。File
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);
新しいセットは日付順に注文されます。
于 2012-11-07T21:24:14.127 に答える
0
Java API for Fileを見ると、 。というメソッドがありlastModified
ます。その属性でファイルを並べ替えると、必要なものが得られるはずです。各実装はOS固有であるため、作成後にファイルを配置する方法はないと確信しています。
したがって、次のようなコンパレータを作成した場合:
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());
于 2012-11-07T21:31:04.563 に答える