public class SearchFile {
//注释写的不详细,词不达意,理解就好
//split()中用到正则表达式进行分割
//这个变量保存了 初始路径中 路径分割符('/') 的数量
private static int initialNum;
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入目录");
String dir=scanner.next();
//用split()方法间接求得'/'的数量
initialNum=dir.split("[/]").length-1;
File rootDir=new File(dir);
searchFile(rootDir);
}
private static void searchFile(File rootDir) {
//仍然用space记录空格
String space="";
//子文件路径中 '/' 的数量 减去 initialNum ,得到space的长度
int spaceNum=rootDir.getPath().split("\\\\").length-1-initialNum;
for (int i=spaceNum;i>0;i--) {
space+=" ";
}
if (rootDir.isDirectory()) {
System.out.println(space+"+--"+rootDir.getName());
for (File subFile:rootDir.listFiles()) {
searchFile(subFile);
}
} else {
System.out.println(space+"--"+rootDir.getName());
}
}
}