我正在尋找作爲更大程序的一部分找到Java中特定文件夾的路徑。
我有一個遞歸函數,用於檢查啓動目錄中包含的每個文件,並且如果它發現我正在查找的文件夾,則將該路徑作爲字符串分配給變量。下面的代碼工作:在Java中查找特定的文件夾
//root is the starting directory and name is the folder I am looking for
private void findDir(File root, String name)
{
if (root.getName().equals(name))
{
toFind = root.getAbsolutePath();
}
File[] files = root.listFiles();
if(files != null)
{
for (File f : files)
{
if(f.isDirectory())
{
findDir(f, name);
}
}
}
}
這工作,但我不喜歡的事實,我必須使用「找到相當」變量。我的問題是有沒有辦法讓方法返回一個字符串而不是void?這也將節省程序在找到正在查找的文件後檢查系統中的所有其他文件。
我在想這樣的事情,但下面的代碼將返回null,即使它找到該文件夾。
private String findDir(File root, String name)
{
if (root.getName().equals(name))
{
return root.getAbsolutePath();
}
File[] files = root.listFiles();
if(files != null)
{
for (File f : files)
{
if(f.isDirectory())
{
return findDir(f, name);
}
}
}
return null; //???
}
['Files'](http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html)中的內置方法有什麼問題嗎?例如''walkFileTree()'。不要重新發明輪子。 –
我會盡量通過使用walkFileTree()來做到這一點,但只有當我不能做遞歸。只是爲了我自己的滿意才這樣做。謝謝你的建議。 – PetarMI