【发布时间】:2019-04-21 08:08:34
【问题描述】:
我有一个网络相关存储,其中大约 500 万个 txt 文件与大约 300 万个事务相关。总数据大小约为 3.5 TB。我必须在该位置搜索以查找与交易相关的文件是否可用,并且必须制作两个单独的报告作为“可用文件”和“不可用文件”的 CSV 文件。我们是 仍然在 JAVA 6 中。我面临的挑战是因为我必须递归地在该位置搜索,由于尺寸巨大,我平均需要大约 2 分钟才能在该位置进行搜索。我正在使用 Java I/O API 进行递归搜索,如下所示。有什么办法可以提高性能吗?
File searchFile(File location, String fileName) {
if (location.isDirectory()) {
File[] arr = location.listFiles();
for (File f : arr) {
File found = searchFile(f, fileName);
if (found != null)
return found;
}
} else {
if (location.getName().equals(fileName)) {
return location;
}
}
return null;
}
【问题讨论】:
-
当你循环遍历这么大的数字时,递归非常糟糕......它增加了 JVM 的开销......但这又取决于你的目录结构有多深...... .
标签: java file search optimization