目录结构 例如
a
a-1/a-11/a-111
b-1/b-11/b-111/b-1111c
c-1/c-11/c-111
d-1/d-11/d-111/d-111已知一个目录列表 如上的 a c 目录 遍历子目录  按深度2来遍历结果就是
a
a-1/a-11/
b-1/b-11/c
c-1/c-11/
d-1/d-11/递归的时候怎么得到深度呢

解决方案 »

  1.   


    我现在就是这么做的,这样得到的深度是总深度
    我要得到的是每个父目录的深度 #1楼的 a c目录的深度
            File list[] = c.files("P:\\zip\\");
            if (list == null || list.length <= 0) {
                return;
            }
            DefaultMutableTreeNode root = new DefaultMutableTreeNode("目录列表");
            addNode(root, list, 0);
        private void addNode(DefaultMutableTreeNode root, File list[], int depth) {
            if (list == null || list.length <= 0) {
                return;
            }
            for (File file : list) {
                if (file.isDirectory()) {
                    DefaultMutableTreeNode node = new DefaultMutableTreeNode(file.getName());
                    root.add(node);
                    if (depth < 2) {
                       addNode(node, c.files(file.getAbsolutePath()), ++depth);
                    }
                }
            }
        }
      

  2.   


    package tm.cao.first;import java.io.File;
    public class VisitFile {
    public static void main(String[] args) {
    File f=new File("D:\\Program Files\\Genuitec\\Workspaces\\MyEclipse 10\\FirstServletProject");
    preOrder(f, 1);
    }/**先序遍历
     *如果是文件,遍历自身
     *如果是文件夹:遍历自身
     *                    遍历它的子文件夹 level+1
     */
    public static void preOrder(File file,int level){
    if(file!=null){
    String   str=generateStr(level);
    if(!file.isDirectory()){
    visit(str, file);
    }else{
    visit(str, file);
    File[] childs=file.listFiles();
    for(File child:childs){
    preOrder(child, level+1);
    }
    }
    }
    }/**
     * 输出一个文件
     */
    public static void visit(String str,File file){
    System.out.println(str+file.getName());
    }/**
    根据层数拼串
     */
    public static String generateStr(int level){
    StringBuffer sb=new StringBuffer();
    for(int i=1;i<=level;i++){
    sb.append("----");
    }
    return sb.toString();
    }
    }
    目录结构:结果:
      

  3.   


        private void addNode(DefaultMutableTreeNode root, File list[]) {
            if (list == null || list.length <= 0) {
                return;
            }
            for (File file : list) {
                if (file.isDirectory()) {
                    DefaultMutableTreeNode node = new DefaultMutableTreeNode(file.getName());
                    root.add(node);
                    String path = file.getAbsolutePath().replace(dir, "");
                    if (path.indexOf("\\") != -1) {
                        String tmp[] = path.split("\\\\");
                        if (tmp.length < 2) {
                            addNode(node, c.files(file.getAbsolutePath()));
                        }
                    }else{
                        addNode(node, c.files(file.getAbsolutePath()));
                    }
                }
            }
        }
    解决了,我用路径来判读深度