gpt4 book ai didi

java - 有没有比递归更好的文件搜索算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:50 25 4
gpt4 key购买 nike

我使用递归来搜索特定类型的文件(例如,此处使用的是 .pdf 文件)。我的递归算法搜索所有子文件夹。但是我发现当子文件夹太多时它会缺乏性能。子子文件夹,子子子文件夹。我想知道是否有更好的文件搜索算法。

下面是我的文件搜索递归代码。我以 .pdf 文件为例

import java.io.File;
public class FInd {
public static void main(String[] args) {
File f = new File("D:/");
find(f);
}
public static void find(File f){
File []list = f.listFiles();
try{
for(int i=0;i<list.length && list.length>0;i++){
if(list[i].isFile() && (list[i].getName().contains(".pdf")) ||
list[i].getName().contains(".PDF"))
System.out.println(list[i].getAbsolutePath());
if(list[i].isDirectory()) find(list[i]);
}
}catch(Exception e){
}
}
}

与文件资源管理器中的搜索选项相比,此代码稍微快一些或等于。我想知道比这更快的算法

最佳答案

尝试迭代方式

public class Find {
public static void main(String[] args) {

File f = new File("D:/");

Stack stack = new Stack<File>();

stack.push(f);

while (!stack.empty())
{
f = (File) stack.pop();
File []list = f.listFiles();
try{
for(int i=0;i<list.length && list.length>0;i++){
if(list[i].isFile() && (list[i].getName().contains(".pdf")) ||
list[i].getName().contains(".PDF"))
System.out.println(list[i].getAbsolutePath());
if(list[i].isDirectory()) stack.push(list[i]);
}
}catch(Exception e){
}
}

关于java - 有没有比递归更好的文件搜索算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43236777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com