Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在目录层次结构中打开具有给定扩展名的文件_Java_File_Java Io - Fatal编程技术网

Java在目录层次结构中打开具有给定扩展名的文件

Java在目录层次结构中打开具有给定扩展名的文件,java,file,java-io,Java,File,Java Io,我实现了一个递归方法来遍历目录层次结构,查找具有给定扩展名的文件;但是我不认为这是最简单的方法,它涉及到isDirectory(),listFiles(),等等 有没有一种方法可以在不显式编写递归方法的情况下实现这一点:我正在考虑类似于find的方法,它可以直接返回结构中任何级别上与正确扩展名匹配的文件或文件名列表(及其完整路径)。然后我会循环这些文件 感谢您的帮助。使用java.io.File#listFiles() 编辑: 如果您想在递归中发现目录,请查看 带有过滤器。您也可以使用 请参见

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

有没有一种方法可以在不显式编写递归方法的情况下实现这一点:我正在考虑类似于
find
的方法,它可以直接返回结构中任何级别上与正确扩展名匹配的文件或文件名列表(及其完整路径)。然后我会循环这些文件

感谢您的帮助。

使用
java.io.File#listFiles()

编辑: 如果您想在递归中发现目录,请查看

带有过滤器。

您也可以使用


请参见Look into Files.walk(),这不是递归的。E它不在子文件夹中搜索,事实上,我在注释中链接的问题中找到了一个涉及
FilenameFilter
的答案。但您的解决方案甚至更短。@Ahmadwabi作者明确要求使用非递归方法,这确实是实现其目标的最简单、最快速的方法(因为这种重载不会为每个找到的文件创建
文件
对象)。我可能不清楚:我希望它递归地浏览目录树,但是我没有实现递归方法调用,我知道他仍然希望通过调用一个方法来搜索子文件夹(隐式递归),也就是说,没有显式递归
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"); 
        }
    });
}
FileUtils.listFiles(dir, extensions, true);