我编了个方法,把给定目录的文件及子文件打印出来,但是当参数递增时,++level要比用level+1多退一截,代码如下,各位看看:
用level+1时输出为:
a
      /b
            /d
                  /o.txt
            /e
                  /g
                        /h
                              /m.txt
                        /l
            /f.txt
      /c.txt
用++level时输出为:
a
      /b
            /d
                  /o.txt
            /e
                        /g
                              /h
                                    /m.txt
                              /l
            /f.txt
      /c.txt
意思就是如果有两个子文件夹,第二个文件夹里的文件要比第一个多一个level;
代码如下:
import java.io.File;
public class msbTree {
public static void main(String[] args){
File file = new File("C:/Documents and Settings/Admini" +
"strator/workspace/FileTree/src/a");
System.out.println(file.getName());
tree(file,1);
}

public static void tree(File file,int level){
String fr = "";
for(int k=0;k<level;k++){
fr += "      ";
}
File[] children = file.listFiles();
for(int i=0;i<children.length ;i++){
System.out.println(fr+"/"+children[i].getName());
if(children[i].isDirectory()&&children[i].listFiles()!=null){
tree(children[i],++level);
}

}
}
}

解决方案 »

  1.   

    [code=Java][import java.io.File;
    public class msbTree {
    public static void main(String[] args){
    File file = new File("C:/Documents and Settings/Admini" +
    "strator/workspace/FileTree/src/a");
    System.out.println(file.getName());
    tree(file,1);
    }

    public static void tree(File file,int level){
    String fr = "";
    for(int k=0;k<level;k++){
    fr += "      ";
    }
    File[] children = file.listFiles();
    for(int i=0;i<children.length ;i++){
    System.out.println(fr+"/"+children[i].getName());
    if(children[i].isDirectory()&&children[i].listFiles()!=null){
    tree(children[i],++level);
    }

    }
    }
    }]
      

  2.   

    [code=Java][/import java.io.File;
    public class msbTree {
    public static void main(String[] args){
    File file = new File("C:/Documents and Settings/Admini" +
    "strator/workspace/FileTree/src/a");
    System.out.println(file.getName());
    tree(file,1);
    }

    public static void tree(File file,int level){
    String fr = "";
    for(int k=0;k<level;k++){
    fr += "      ";
    }
    File[] children = file.listFiles();
    for(int i=0;i<children.length ;i++){
    System.out.println(fr+"/"+children[i].getName());
    if(children[i].isDirectory()&&children[i].listFiles()!=null){
    tree(children[i],++level);
    }

    }
    }
    }]
      

  3.   

    第一次发帖,才会发,here
    import java.io.File;
    public class msbTree {
    public static void main(String[] args){
    File file = new File("C:/Documents and Settings/Admini" +
    "strator/workspace/FileTree/src/a");
    System.out.println(file.getName());
    tree(file,1);
    }

    public static void tree(File file,int level){
    String fr = "";
    for(int k=0;k<level;k++){
    fr += "      ";
    }
    File[] children = file.listFiles();
    for(int i=0;i<children.length ;i++){
    System.out.println(fr+"/"+children[i].getName());
    if(children[i].isDirectory()&&children[i].listFiles()!=null){
    tree(children[i],++level);
    }

    }
    }
    }
      

  4.   

    ++level是先加+1再进行运算
    level++是先进行运算再加+1
    level+1之后,level的值还是不变(如果你没有level=level+1的话)
      

  5.   

    输出结果为:/*++level:
    a
          /b
                /d
                      /o.txt
                /e
                            /g
                                  /h
                                        /m.txt
                                  /l
                /f.txt
          /c.txt
    level+1:
    a
          /b
                /d
                      /o.txt
                /e
                      /g
                            /h
                                  /m.txt
                            /l
                /f.txt
          /c.txt
    */
      

  6.   

    你这个函数,用level+1就对了。递归调用,不要改变level的值。