【发布时间】:2013-04-24 13:41:25
【问题描述】:
在 lastmodified 日期之前获取文件的最快方法是什么? 我有一个包含一些 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());
}
}
【问题讨论】:
-
获得更快的网络。
-
是的,但它是一个公司网络。这些文件在服务器上,当我在同一栋建筑物中访问此服务器时,它非常快(例如每个文件 0.11 秒),但是当我在其他城市访问它们时,请求时间约为 1.30 分钟..