java - 如何在java中打印所有目录和文件以及所有子目录和文件

标签 java loops iteration

我写了下面的代码 我想改进我的代码中的所有子树,仅适用于 2 层我想将我的代码更改为所有层的迭代代码。

    for(int p=0;p<f3.length;p++){

            if(f3[p].isDirectory()){
                System.out.println(f3[p]+"*****DIRECTORY*****");
                File[] fsub=f3[p].listFiles();
                for(int i=0;i<fsub.length;i++){
                    if(fsub[i].isDirectory()){
                    System.out.println(fsub[i]+"  DIRECTOY");}
                    else System.out.println(fsub[i]+"  FILE");
                }

                    }
            else System.out.println(f3[p]+"--FILE");
    }

最佳答案

您可以采用递归方法。下面建议的要点是,我们在遍历目录树时不断调用 printLevel。当我们点击一​​个文件时,递归就会停止,这意味着目录树中该点以下没有更多文件。

public void printLevel(File file) {
    if (!file.isDirectory()) {
        System.out.println(file.getName() + "--FILE");
        return;
    }

    System.out.println(file.getName() + "*****DIRECTORY*****");
    File[] subs = file.listFiles();
    for (File sub : subs) {
        printLevel(sub);
    }
}

关于java - 如何在java中打印所有目录和文件以及所有子目录和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51964214/

相关文章:

java - 如何使用 Gradle 命令行参数更改代码变量

java - 基元上的 System.identityHashCode() 行为

java - Java与Objective C之间的Socket连接

java - 使用循环用 5 个给定字符串填充数组

algorithm - 是否可以将此递归解决方案(打印括号)转换为迭代版本?

javascript - js中迭代对象数组: skip when undefined

c# - Java 和 C# 环境中基于规则的系统

c - 我不明白为什么 for 循环不能编译

java - 打印数组中从第 N 个索引开始的元素

python - 如何在 python 中组合列表中的每 5 个列表?