2016-08-24 57 views
3

我实现了一个递归方法来遍历目录层次结构,以查找具有给定扩展名的文件;但我不认为这是最简单的方法,它涉及isDirectory()listFiles()在目录层次结构中给定扩展名的Java打开文件

有没有办法做到这一点没有明确地写一个递归方法:我想这样find,将直接返回在匹配正确扩展名的结构中的任何级别上的文件或文件名列表(带有完整路径)。然后我会循环这些文件。

任何帮助表示赞赏。

+0

见http://stackoverflow.com/questions/15624226/java-search-for-files-in-a-directory – AhmadWabbi

+2

。看看Files.walk() –

回答

2

使用java.io.File#listFiles();

public File[] finder(String dirName){ 
    File dir = new File(dirName); 
    return dir.listFiles(new FilenameFilter() { 
     public boolean accept(File dir, String filename){ 
      return filename.endsWith(".txt"); 
     } 
    }); 
} 

编辑: 如果你想发现在递归目录看看

FileUtilslistFiles(File directory, String[] extensions, boolean recursive)

一个过滤器。

+1

这不是递归的,我。即它不会在子文件夹中搜索 – AhmadWabbi

+1

谢谢,的确,我在评论中链接的问题中找到了涉及“FilenameFilter”的答案。但是你的解决方案更短。 –

+1

@AhmadWabbi作者明确要求*非递归,这​​确实是最简单和快速的(因为这个重载不会为每个找到的文件创建一个'File'对象)来实现他的目标 – codejanovic

相关问题