此方法使用递归来查找名称中包含特定字符串的文件。它在网络驱动器上进行搜索,有时必须搜索数百甚至数千个目录,才能找到所需的目录。这很慢 - 有时需要5-10秒。我怀疑这个延迟是由网络连接造成的,因为这个网络对于其他网络来说非常快。无论如何,这只是我鞭so过的东西,所以可能会有更高效的东西。有什么方法可以显着提高此文件搜索的效率?
public static File findFile(File root, String name)
{
File [] dir = root.listFiles();
File a = null;
for(int i = 0; i < dir.length; i++)
{
if(dir[i].isDirectory() && a == null)
a = findFile(dir[i],name);
else if(dir[i].getName().indexOf(name) > -1)
return dir[i];
}
return a;
}
那么有没有什么办法可以改善呢?或者搜索很多目录的过程总是会很慢?谢谢。
五到十秒很不错。我看到Windows资源管理器搜索花费的时间比这更长。 –
存在一个明显的问题:即使找到文件,搜索也不会停止。 –
当findFile在递归之外被调用时,根是否总是相同? – dchhetri