黑马程序员技术交流社区
标题:
求“File对象中带层次列出目录下的所有内容”的程序解释
[打印本页]
作者:
柯玲
时间:
2012-7-2 18:38
标题:
求“File对象中带层次列出目录下的所有内容”的程序解释
列出目录下所有内容--带层次,这部分的程序代码不是太懂,大家能否解释的清楚一点?
import java.io.*;
class FileDemo3{
public static void main(String[] args){
File dir=new File("d:\\test");
showDir_level(dir,0);
}
public static void showDir_level(File dir,int level){
System.out.println(getLevel(level)+dir.getName());
level++;
File[] files=dir.listFiles();
for(int x=0;x<files.length;x++){
if(files[x].isDirectory())
showDir_level(files[x],level);
else
System.out.println(getLevel(level)+files[x]);
}
}
public static String getLevel(int level){
StringBuilder sb=new StringBuilder();
sb.append("|--");
for(int x=0;x<level;x++){
sb.insert(0,"| ");
}
return sb.toString();
}
}
复制代码
作者:
蒋映辉
时间:
2012-7-2 18:45
首先楼主应该知道 一个目录下可能有n多级的目录 你写代码的时候根本不知道下面有多少级 所以就必须用递归的方法
执行步骤 1.列出已知路径的里的所有File,然后遍历判断它是目录还是文件,如果是文件的话,直接输出名字就O了 如果是目录 把目录名字改了以后继续遍历(也就是继续调用你自己写的遍历的方法) 这个就是递归了.
作者:
黑马-王言龙
时间:
2012-7-2 20:21
package cn.itcast.melon;
import java.io.*;
class FileDemo3{
public static void main(String[] args){
File dir=new File("d:\\test"); //在内存创建文件对象,指向 d:\test
showDir_level(dir,0);
}
public static void showDir_level(File dir,int level){ //分级显示
System.out.println(getLevel(level)+dir.getName()); //首先打印一次文件夹或文件夹的名字
level++;//级数自增
File[] files=dir.listFiles(); //将文件或文件夹封装成数组
for(int x=0;x<files.length;x++){ //对文件数组遍历
if(files[x].isDirectory()) //如果是目录
showDir_level(files[x],level); //递归,重新遍历目录下的元素
else
System.out.println(getLevel(level)+files[x]); //按级输出,文件或文件夹路径名
}
}
public static String getLevel(int level){ //获得级数,级数用符号代替
StringBuilder sb=new StringBuilder();
sb.append("|--");
for(int x=0;x<level;x++){
sb.insert(0,"| ");
}
return sb.toString();
}
}
作者:
周朋飞
时间:
2012-7-2 21:01
本帖最后由 周朋飞 于 2012-7-2 21:04 编辑
import java.io.*;
class FileMutilList {
public static void main(String[] args) {
File dir = new File("d:\\test");
showDir_level(dir, 0);
}
public static void showDir_level(File dir, int level) {
System.out.println(getLevel(level) + dir.getName
());//第一次执行到这里的时候打印出来的是|--加上你的文件的名字,
//然后下次进来说明又往里面进了一层也就是存在文件时目录的情况
level++;
File[] files = dir.listFiles();
for (int x = 0; x < files.length; x++) {
if (files[x].isDirectory())
showDir_level(files[x], level
);//你执行到了这里说明你的文件时文件夹,要进里面去查看文件 所以重新执行,
//重新执行就会再进一层level就会++ 这样每次都会增加一个字符串|--这样层次级别不是显示出来了吗
//其实就是多加了些符号而已
else
System.out.println(getLevel(level) + files[x]);
}
}
public static String getLevel(int level) {
StringBuilder sb = new StringBuilder();
sb.append("|--");//首先会执行到这里给sb添加一个括号当中的字符串,因为level为0所以直接返回“|--“
for (int x = 0; x < level; x++) {
sb.insert(0, "| ");
}
return sb.toString();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2