繁体   English   中英

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

[英]Finding a specific file in a folder in java

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

因此,这意味着我必须进行递归操作。...或者有一种简单的方法可以完成此任务。 我正在使用JDK 1.5。

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

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

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

  • isDirectory()函数。 相当自我解释。
  • 如果File对象是目录,则必须使用listFiles()函数。 返回文件对象的数组,这些文件是文件AND目录。 您只需在此数组上调用递归函数。
  • 您可能还需要研究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;
}

IIRC Java 7具有一些目录遍历实用程序。 您也可以使用堆栈或队列来遍历目录树而无需递归。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM