import java.io.*;
public class FileTree {
    static private int degree=0;
    private String str="0";
/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
         File filename=new File("F:\\java");
         new FileTree().tree(filename);
         
}  public void tree(File filename){
 File[] child=filename.listFiles();
/* String str="";
 for(int i=0;i<level;++i)
    str+=" ";*/
 str+="0";
 for(int start=0;start<child.length;++start)
 {
 System.out.println(str);
 System.out.println();
 //System.out.println(str+child[start].getName());
 if(child[start].isDirectory()){
    tree(child[start]);
 }
 
 }
 
 }
}
每一次遍历前面都是0,和注释的不一样的

解决方案 »

  1.   

    static private String str="0";
      

  2.   

    import java.io.File;//以树状显示文件或目录的内容
    public class ShowFileTree
    {
    public boolean showFile(File file,String s)
    {
    if(file.exists())//判断文件是否存在
    {
    if(file.isDirectory())//判断是否文件目录
    {
    //打印文件夹名然后递归文件夹里的内容
    System.out.println(s+"文件夹"+file.getName());
    File[] files = file.listFiles();
    s+=" "; //缩进
    for (File f : files)
    {
    showFile(f,s);
    }
    return true;
    }
    //如果是文件则直接打印文件名
    System.out.println(s+file.getName());
    return true;
    }
    return false;
    }
    public static void main(String[] args)
    {
    File file = new File("C:/TEST");
    ShowFileTree showfile =new ShowFileTree();
    String s="";
    showfile.showFile(file,s);
    }
    }
    这是我用递归显示文件类容的,你看看合适不!
      

  3.   


    这个我也知道  我就是想知道为甚麽我那个不对  改为static也不对
    我的和你那个有什麽区别吗?
    看下图  
      

  4.   

     for(int start=0;start<child.length;++start)
    改为
     for(int start=0;start<child.length;start++)
      

  5.   

    这是你想要的效果吧?
    把缩进符号改成'+'好些package com.lhq;import java.io.*;
    public class FileTree {
        static private int degree=0;
        private StringBuffer str = new StringBuffer("");
        
        
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
             File filename=new File("C:\\tmp\\AIX");
             System.out.println("rootNode:"+filename.getName());
             FileTree tree = new FileTree();
             tree.tree(filename);
             tree.getTreeOut();
        }    public void getTreeOut()
        {
            System.out.println(str.toString());
        }
         public void tree(File filename){
          int currDegree = this.degree;
          if(filename.isFile())
          {
          for(int i=0;i<currDegree;i++)
          {
          str.append("+");
          }
           str.append(filename.getName());
               str.append("\r\n");
          }
          if (filename.isDirectory())
          {
          this.degree++;
          File[] child=filename.listFiles();
                 for(int start=0;start<child.length;++start)
                 {
                 tree(child[start]);
                 }
             this.degree--; 
          }         
         }
    }
      

  6.   

    不对的原因应该是随着不停的递归,tag不断的边长而在回退时又没有初始快导致package com;import java.io.File;public class FileList {
    public static void main(String[] args) {
    File f=new File("E:\\help");

    FileList flist=new FileList();
    flist.tree(f,0);
    }

    private void tree(File f,final int level){
    /*if(level>=3){
    return;
    }*/
    String tag="";
    for(int i=0;i<level;i++){
     tag+="++++";
    }
    File[] files= f.listFiles();
    for(int i=0;i<files.length;i++){
    System.out.println(tag+files[i].getName());
    if(files[i].isDirectory()){
    int newlevel=level+1;
    tree(files[i],newlevel);
    }
    }
    }
    }