我不熟悉Java中的递归,并且正在研究一个用于搜索文件并返回相关文件位置的类。
我遇到了一个小问题。找到所需文件后,该方法应返回“else if”块中文件位置的String并终止该方法。而是返回默认字符串(“未找到文件”),仅用于未找到所需文件的情况。
我知道该函数可以检测到所需的文件,我在'else if'块中打印出一个打印声明(注释掉),打印出文件位置并且可以正常工作,但是再次在“else”中返回一个值如果“块没有终止方法,只运行'默认'返回值。
有任何想法或建议吗?
import java.io.File;
import java.util.*;
public class FileSearch {
public static String findFile(File path, String target) {
if (path == null || !path.exists()) {
return ("Path Doesnt Exist."); // If no such path exists.
}
File[] list = path.listFiles();
if (list != null) {
for (int i = 0; i < list.length; i++) {
// Calls if another directory is found.
if (list[i].isDirectory()) {
// System.out.println("Searching Path...");
findFile(list[i], target);
}
// Block for when desired file is located.
else if (target.equals(list[i].getName())) {
//System.out.println(list[i].getPath());
return (list[i].getPath()); // Desired return value, supposed to terminate method and pass value to main.
}
}
}
return "File Not Found"; // Message if file is not found.
}
// Main method to test out return value of method
public static void main(String[] args) {
System.out.println(findFile(new File("C:\\Users\\"), "file.exe"));
}
}
答案 0 :(得分:2)
问题是你忽略了递归调用.highlight {
background: yellow;
}
返回的值。当该调用找到目标文件时,您应该返回它返回的值。
更改:
<button onclick="highlight()">Highlight</button>
<input type="text" class="toGetText"/>
<div class="inputText">
I have a cat, a dog, and a goat.
</div>
为:
findFile(list[i], target)