- <p> public static String getLevel(int level)
- {
- StringBuilder sb=new StringBuilder();
- for(int i=0;i<level;i++)
- sb.append(" ");//把一段固定大小的空字符存入StringBuilder里
- //第一次传入0时,StringBuilder的长度为0,返回null
- return sb.toString();
- }
- public static void showDir(File dir,int level)//level有个初始值0,遍历目录,传入一个路径,和初始level //在showDir()里怎么实现也不大清楚了
- {/*此时level=0,首先调用getLevel(0),请看上面,然后在打印的目录的绝对路径前面什么也不加,如果是传入
- level=1,那么就在绝对路径前加上一段“ ”,如果是level=2,那么加“ ”,以此类推...不说你也懂
- */
- sop(getLevel(level)+dir);
- level++;//打印完后level+1,至于为什么要加1,因为第一个遍历的是一个最顶层的目录,所以没有和最顶层的平级的目录了,所以接下来遍历的就是这个顶层目录里的文件了,所以要+1分级
- File[] files=dir.listFiles();//得到dir目录里面的所有目录和文件的路径
- for(File file:files)
- {
- if(file.isDirectory())//判断这一个文件是否是目录
- showDir(file,level);//如果是,那么就将这个文件作为一个最顶层的目录,递归调用,进去该目录里面再遍历
- else
- sop(getLevel(level)+file);//如果不是目录,那就是文件了,直接打印该文件的路径就对了
- //此时的level已经是1了,所以前面要有一段“ ”
- }
- }
- }
- //A(0)-----
- |
- |
- |
- B(1)-----c(2)
- |
- |
- |
- E(2)</p><p> </p>
复制代码 这也挺难说得明白,最好能画画图,上图的数字是LEVEL的值
|