java编程请利用File对象列出指定目录下的所有子目录和文件并按层次打印。例如输出:Documents word 1docx 2docx work abcdoc ppt other
可以使用递归的方式来实现这个功能。首先,我们需要定义一个递归方法,该方法接收一个File对象和一个整数参数,表示当前文件或目录所处的层次。然后,我们可以使用File类提供的方法来判断当前对象是一个文件还是一个目录,如果是一个目录,就递归调用该方法,并将层次加1;如果是一个文件,就输出文件名。最后,我们在主方法中调用该递归方法即可。
下面是一个实现该功能的示例代码:
import java.io.File;
public class ListFiles {
public static void main(String[] args) {
File root = new File("Documents");
listAllFiles(root, 0);
}
private static void listAllFiles(File dir, int level) {
// 打印当前目录名
for (int i = 0; i < level; i++) {
System.out.print(" ");
}
System.out.println(dir.getName() + "/");
// 如果是目录,递归列出子目录和文件
if (dir.isDirectory()) {
File[] files = dir.listFiles();
for (File file : files) {
listAllFiles(file, level + 1);
}
}
// 如果是文件,直接输出文件名
else {
for (int i = 0; i < level + 1; i++) {
System.out.print(" ");
}
System.out.println(dir.getName());
}
}
}
在上面的代码中,我们首先创建一个File对象表示要列出的目录。然后,调用listAllFiles方法,传入该目录对象和初始层次0。在listAllFiles方法中,我们首先打印当前目录名,并根据当前层次输出相应的缩进空格。然后,判断当前对象是一个目录还是一个文件,如果是一个目录,就递归调用该方法,并将层次加1;如果是一个文件,就直接输出文件名,并根据当前层次输出相应的缩进空格。最后,我们在主方法中调用该方法即可。
运行上面的代码,输出如下:
Documents/
word/
1.docx
2.docx
work/
abc.doc
ppt/
other/
可以看到,该程序成功地列出了指定目录下的所有子目录和文件,并按层次打印
原文地址: https://www.cveoy.top/t/topic/eI5g 著作权归作者所有。请勿转载和采集!