在 Java 中查找具有特定名称的目录的最佳方法是什么?我要查找的目录可以位于当前目录或其子目录之一中。
问问题
22920 次
7 回答
4
要遍历文件树,可以使用FileVisitor接口。请看教程。另请参阅查找示例代码。
于 2012-05-28T07:25:01.000 回答
3
您的解决方案将包括使用File.listFiles(String)
于 2012-05-28T07:19:20.427 回答
3
正如你提到的递归应该满足这个要求
import java.io.File;
public class CheckFile {
private static boolean foundFolder = false;
public static void main(String[] args) {
File dir = new File("currentdirectory");
findDirectory(dir);
}
private static void findDirectory(File parentDirectory) {
if(foundFolder) {
return;
}
File[] files = parentDirectory.listFiles();
for (File file : files) {
if (file.isFile()) {
continue;
}
if (file.getName().equals("folderNameToFind")) {
foundFolder = true;
break;
}
if(file.isDirectory()) {
findDirectory(file);
}
}
}
}
于 2012-05-28T07:28:14.150 回答
0
分而治之?一种天真的方法:对于每个目录,您可以启动一个任务,它执行以下操作:
- 列出每个目录
- 如果列表包含匹配的目录,则打印并退出应用程序
- 为每个目录启动一个任务。
于 2012-05-28T07:23:43.857 回答
0
就像是:
public static final File findIt(File rootDir, String fileName) {
File[] files = rootDir.listFiles();
List<File> directories = new ArrayList<File>(files.length);
for (File file : files) {
if (file.getName().equals(fileName)) {
return file;
} else if (file.isDirectory()) {
directories.add(file);
}
}
for (File directory : directories) {
File file = findIt(directory);
if (file != null) {
return file;
}
}
return null;
}
于 2012-05-28T07:25:21.940 回答
0
或者,您应该使用递归搜索文件的概念,直到找到: 这是代码:
String name; //to hold the search file name
public String listFolder(File dir) {
int flag;
File[] subDirs = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory();
}
});
System.out.println("File of Directory: " + dir.getAbsolutePath());
flag = Listfile(dir);
if (flag == 0) {
System.out.println("File Found in THe Directory: " + dir.getAbsolutePath());
Speak("File Found in THe Directory: !!" + dir.getAbsolutePath());
return dir.getAbsolutePath();
}
for (File folder : subDirs) {
listFolder(folder);
}
return null;
}
private int Listfile(File dir) {
boolean ch = false;
File[] files = dir.listFiles();
for (File file : files) {
Listfile(file);
if (file.getName().indexOf(name.toLowerCase()) != -1) {//check all in lower case
System.out.println(name + "Found Sucessfully!!");
ch = true;
}
}
if (ch) {
return 1;
} else {
return 0;
}
}
于 2017-08-08T12:04:37.287 回答