0

我需要在文件夹中找到特定文件,例如 info.txt。问题是我不知道文件在什么级别。例如,该文件可以在子文件夹中或在子文件夹的子文件夹中。

所以这意味着我必须通过递归......或者有一个简单的方法来完成这个任务。我正在使用 JDK 1.5。

4

3 回答 3

2

您可以使用apache commons-io FileUtils。假设您要递归搜索目录messyfolder下的文件foo

Collection<File> results = FileUtils.listFiles(new File("messyfolder"), 
                                               new NameFileFilter("foo"), 
                                               TrueFileFilter.INSTANCE)
于 2013-09-10T01:02:37.747 回答
1

您不必使用递归,但它是一个好主意。您可以使用Filejava 中的对象来帮助您。您将使用的一些关键内容:

  • isDirectory()功能。相当不言自明。
  • 如果File对象是目录,则必须使用该listFiles()函数。返回文件对象数组,它们是文件和目录。你只需在这个数组上调用你的递归函数。
  • 您可能还想查看FilenameFilter界面来帮助您。

代码的简单模型类似于

File findFile(String fileName, File[] files){
    for(File file : files){
        if(file.isDirectory) File f = findFile(fileName, file.listFiles());
        if(f!=null) return f;
        if(file.getName.equals(fileName)) return file;
    }
    return null;
}
于 2013-09-09T23:56:05.710 回答
0

IIRC java 7 有一些目录遍历工具。您还可以使用堆栈或队列来遍历目录树而无需递归。

于 2013-09-10T00:24:41.040 回答