一尘不染

如何遍历Java目录中的文件?

java

我需要获取目录中所有文件的列表,包括所有子目录中的文件。用Java完成目录迭代的标准方法是什么?


阅读 333

收藏
2020-03-01

共1个答案

一尘不染

你可以File#isDirectory()用来测试给定的文件(路径)是否为目录。如果是true,则只需再次调用同一个方法及其File#listFiles()结果即可。这称为递归。

这是一个基本的启动示例。

public static void main(String... args) {
    File[] files = new File("C:/").listFiles();
    showFiles(files);
}

public static void showFiles(File[] files) {
    for (File file : files) {
        if (file.isDirectory()) {
            System.out.println("Directory: " + file.getName());
            showFiles(file.listFiles()); // Calls same method again.
        } else {
            System.out.println("File: " + file.getName());
        }
    }
}

请注意,这StackOverflowError对树的深度超过JVM堆栈可以容纳的深度很敏感。你可能要使用迭代方法或尾递归,但这是另一个主题;)

2020-03-01