如何以java打印所有目录和文件以及所有子目录和文件
我写了下面的代码 我想改进我的代码中的所有子树,只针对2层,我想将我的代码更改为所有层的迭代代码如何以java打印所有目录和文件以及所有子目录和文件,java,loops,iteration,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 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");
}
for(int p=0;p试试这个:
public class Test {
public static void main(String[] args) throws IOException {
File[] paths = File.listRoots();
for (int i = 0; i < paths.length; i++) {
showfiles(paths[i]);
}
}
public static void showfiles(File dir) {
try {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
System.out.println("Directory:" + file.getCanonicalPath());
showfiles(file);
} else {
System.out.println("File:" + file.getCanonicalPath());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
公共类测试{
公共静态void main(字符串[]args)引发IOException{
File[]路径=File.listRoots();
for(int i=0;i
}您可以使用递归方法。下面建议的要点是,我们在遍历目录树时不断调用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);
}
}
可以递归调用方法,也可以使用文件。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");
}
});
Path p=Path.get(startDir);
walkFileTree(p,新的SimpleFileVisitor(){
公共无效访问文件(路径文件、基本文件属性属性属性){
System.out.println(Files.isDirectory(file)-“file”:“DIRECTORY”);
}
});
你签出答案了吗?如果我是你,我会尝试递归的方法。它的可能重复只在当前目录中起作用,而不是像OP所问的那样在整个文件系统中起作用:-/在整个文件系统中起作用。