這應該很容易。這個問題(Java - Search for files in a directory)似乎讓我有99%的途徑到達我需要的地方,但是失蹤的1%是一個真正的SOB。在目錄中查找文件並返回其完整路徑和文件名
我需要在一個目錄中找到一個特定的文件,並將完整路徑和文件名作爲字符串返回。如果有多個匹配的文件,那很好,我只需要第一個匹配。
下面的代碼可以遞歸地遍歷目錄結構並返回所有匹配 - 當我將sysout放入方法的各個部分時,我可以看到它發生了 - 但是我不能當我找到一場比賽並讓我返回比賽的價值時,我會停下來。
我試着用WHILE語句替換FOR語句,該WHILE語句由foundfile變量的值以及半打其他方法控制,但它們都歸結爲相同的結尾;當我找到匹配的文件並將其設置爲「else if」子句中的foundfile變量時,for循環將繼續迭代,並在下一個循環中用「」值覆蓋foundfile變量的值。我會認爲從「if else」子句中調用setOutput方法會成功設置該值,直到列表數組爲空,但顯然不是。
顯然有一些關於遞歸和參數的持久性,我從根本上誤解。任何人都可以照亮?
package app;
import java.io.*;
import java.util.*;
class FindFile {
public String setOutput(String name, File file, String fileloc) {
String foundfile = fileloc;
File[] list = file.listFiles();
if (list != null)
for (File fil : list) {
if (fil.isDirectory()) {
setOutput(name, fil, foundfile);
} else if (fil.getName().contains(name)) {
foundfile = (fil.getParentFile() + "\\" + fil.getName());
setOutput(name, fil, foundfile);
}
}
return foundfile;
}
public static void main(String[] args) {
FindFile ff = new FindFile();
String thisstring = ff.setOutput(".jar", new File("/Temp/df384b41-198d-4fee-8704-70952d28cbde"), "");
System.out.println("output: " + thisstring);
}
}
這個環節將是對你有幫助。 http://docs.oracle.com/javase/tutorial/essential/io/find.html – 2014-09-26 06:33:44