如何在Java上打印所有目录和文件以及所有子目录和文件

时间:2018-08-22 09:54:11

标签: 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");
    }

3 个答案:

答案 0 :(得分:1)

您可以采用递归方法。以下建议的要点是,在遍历目录树时,我们将继续调用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);
    }
}

答案 1 :(得分:0)

尝试一下:

Hash::contains

}

答案 2 :(得分:0)

您可以递归调用方法或使用Files.walkFileTree

Path p = Paths.get(startDir);
File.walkFileTree(p, new SimpleFileVisitor<Path>() {
    public void visitFile(Path file, BasicFileAttributes attrs) {
        System.out.println(Files.isDirectory(file) ? "FILE" : "DIRECTORY");
    }
});