继续学习递归思想。
public class FileLevel{
public static void main(String[] args){
File f=new File("D:\\java\\project");
showDir(f,0);
}
public static String Level(int level){
StringBuilder sb=new StringBuilder();
for(int i=0;i<=level;i++){
sb.append(" ");//以空格的格式来标明目录层次;
}
return sb.toString();
}
public static void showDir(File file,int level){
File[] files=file.listFiles();//得到目录下的文件,文件包括文件和文件夹
level++;//区别目录的层次
for(File f:files){
if(f.isDirectory()) showDir(f,level);//如果是目录,递归调用自己,层次自增
else sop(Level()+f.getName());//不是目录直接输出。以空格的形式输出。
}
}
public static void sop(Object obj){
System.out.println(obj);
}
public static <T> void sop2(T t){
System.out.print(t);
}
}
new File("D:\\java\\project"); 是目录,可以自己自定义, Level()方法表示层次 目录的层次空的空格。,file.listFiles()得到目录,增强for循环循环目录,if是目录,那么调用自己递归,如果不是目录,直接以特定格式输出。sop(Level()+f.getNmae());//输出层次空格的格式,加文件名字。