1

重複の可能性:
Javaのディレクトリで最後に変更されたファイルを見つけるにはどうすればよいですか?

作成された順序でディレクトリからファイルを取得しようとしています。これは、Javaを使用する際の問題になっています。FileクラスのlistFiles()メソッドは、ファイルが返される順序を保証するものではありません。ディレクトリに作成された順序でファイルを取得する他の方法はありますか?

4

5 に答える 5

1

に基づいてを使用してarray of files返品を並べ替える必要がありますFile.listFiles()ComparatorFile.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を作成します。Fileunsorted.addAll(dir.listFiles()TreeSetSet<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

あなたがすでに理解したlistFilesように、保証と注文はありません。この質問で説明されているように、作成時間を見つけるためにその属性を取得し、thiaのようなものを使用してそれをソートすることができます。

于 2012-11-07T21:29:16.617 に答える
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 に答える