最終変更日でファイルを取得する最速の方法は何ですか? いくつかのtxtファイルを含むディレクトリを取得しました。ユーザーは日付で調査を行うことができます。ディレクトリ内のすべてのファイルを最終変更日 (File[] 内) で一覧表示し、特定の日付で適切なファイルを検索します。ファイルを並べ替えるには、lastmodified 日付を使用したコレクションの並べ替えを使用します。ローカル ドライブからファイルを取得するときは高速ですが、ネットワーク (プライベート ネットワーク) 上のドライブにアクセスする場合、ファイルを取得するのに約 10 分かかることがあります。ネットワークよりも速くできないことはわかっていますが、私のソリューションよりも本当に高速なソリューションはありますか?
私のコードの例:
File[] files = repertoire.listFiles();
Arrays.sort(files, new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
return Long.valueOf(o2.lastModified()).compareTo(o1.lastModified());
}
});
for (File element : files) {
// i get the right file;
}
ご協力いただきありがとうございます
解決策は次のとおりです。
Path repertoiry = Paths.get(repertoire.getAbsolutePath());
final DirectoryStream<Path> stream = Files.newDirectoryStream(repertoiry, new DirectoryStream.Filter<Path>() {
@Override
public boolean accept(Path entry) throws IOException {
return Files.getLastModifiedTime(entry, LinkOption.NOFOLLOW_LINKS).toMillis() >= (dateRechercheeA.getTime() - (24 * 60 * 60 * 1000)) && Files.getLastModifiedTime(entry, LinkOption.NOFOLLOW_LINKS).toMillis() <= (dateRechercheeB.getTime() + (24 * 60 * 60 * 1000));
}
});
for (Path path : stream) {
if (!path.toFile().getName().endsWith("TAM") && !path.toFile().getName().endsWith("RAM")) {
listFichiers.add(path.toFile());
}
}