gpt4 book ai didi

java - 在具有多个目录的目录中搜索文件

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

这是我的目标。我希望能够将父目录和文件名传递给在目录和任何子目录中搜索该特定文件的方法。下面是我一直在使用的代码,但无法让它完全按照我的意愿去做。它会找到我指定的文件,但不会返回任何内容。

private static File findFile(File dir, String name) {
String file = "";
File[] dirlist = dir.listFiles();

search:
for(int i = 0; i < dirlist.length; i++) {
if(dirlist[i].isDirectory()) {
findFile(dirlist[i], name);
} else if(dirlist[i].getName().matches(name)) {
file = dirlist[i].toString();
break search;
}
}

return new File(file);
}

我知道当该方法找到一个目录并调用自身时,它会重置我存储找到的文件的文件变量。所以这就是为什么我得到空白返回的原因。我不确定如何实现这个目标,或者它是否可能。

最佳答案

问题是你没有从递归调用中返回任何东西:

if(dirlist[i].isDirectory()) {
findFile(dirlist[i], name); // <-- here
} else if(dirlist[i].getName().matches(name)) {

我会做以下事情:

private static File findFile(File dir, String name) {
File result = null; // no need to store result as String, you're returning File anyway
File[] dirlist = dir.listFiles();

for(int i = 0; i < dirlist.length; i++) {
if(dirlist[i].isDirectory()) {
result = findFile(dirlist[i], name);
if (result!=null) break; // recursive call found the file; terminate the loop
} else if(dirlist[i].getName().matches(name)) {
return dirlist[i]; // found the file; return it
}
}
return result; // will return null if we didn't find anything
}

关于java - 在具有多个目录的目录中搜索文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1375729/

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