在java中查找文件夹中的特定文件

时间:2013-09-09 23:48:12

标签: java

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

所以这意味着我必须经历递归....或者有一种简单的方法来完成这项任务。我使用的是JDK 1.5。

3 个答案:

答案 0 :(得分:2)

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

Collection<File> results = FileUtils.listFiles(new File("messyfolder"), 
                                               new NameFileFilter("foo"), 
                                               TrueFileFilter.INSTANCE)

答案 1 :(得分:1)

你不必使用递归,但这是一个好主意。您可以使用java中的File对象来帮助您。您将使用的几个关键事项:

  • 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;
}

答案 2 :(得分:0)

IIRC java 7有一些目录walk utils。您还可以使用堆栈或队列来遍历目录树而不进行递归。