public static void list_allFiles(String path) { File current_dir = new File(path);
File sub_dir[];// 子目录
// 假如传递的是个文件
if (current_dir.isFile()) {
System.out.println("    |_" + current_dir.getName());
}
// 假如传递是个目录
if (current_dir.isDirectory()) {
// 列出当前目录中所有的子目录或文件存到子目录中
sub_dir = current_dir.listFiles();
// 判读每个子目录是否是目录或文件
for (int i = 0; i < sub_dir.length; i++) { if (sub_dir[i].isDirectory()) { System.out.println("+" + sub_dir[i].getName());
list_allFiles(sub_dir[i].getPath());
} else
list_allFiles(sub_dir[i].getPath());
}
}怎样打印树结构。求高手帮忙。

解决方案 »

  1.   

    public void showFiles(File file, int deep) {
         for(int i = 0;i<deep;i++){
           System.out.print("-");
         }
        System.out.println(file.getName());
        if(!file.isDirectory())
          return;
       File[] children = file.listFiles();
       if(children.length == 0)
       return;
       for(File child:children) {
         showFiles(child, deep + 1);
         }
      }public static void main(String[] args) {
       ShowFiles show = new ShowFiles();
       File file = new File("F:\\CSDN_datas");
         show.showFiles(file, 0);
     }
    }
      

  2.   

    //如果是做作业的话,那我就是害楼主了。不好意思了。你可以研究jtree。我记得当初交作业的时候,我是用jtree教的作业。
      

  3.   

    设置一个int grade
    判断了为子目录 grade++; 
    然后打印的时候根据grade 的值 在前面加标识
      

  4.   

      谢了。不是作业,在做一个过滤文件软件遇到的一个问题。for(File child:children) 这句看不懂。
      

  5.   


    import java.io.*;
    import java.util.*;public class ListFile {
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
    System.out.println("Input the absolute path of the file:");
    String path = sc.nextLine();
    File file = new File(path);
    System.out.println(file.getName());
    new ListFile().dir(file,1);
    }

    private void dir(File file, int level) { File[] files = file.listFiles();
    String preStr = "";
    for(int i=0; i<level; i++)
    preStr += "    ";
    for(int i=0; i<files.length; i++) {

    System.out.println(preStr+files[i].getName());
    if(files[i].isDirectory()) {
    dir(files[i],++level);
    }

    }
    }
    }
      

  6.   

    这个事将children的值一个一个的赋给child这个file的数组
    这个是foreach的一个应用,呵呵