我写了下面的代码 我想将代码的所有子树都改进到仅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");
}
答案 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");
}
});