static void printTab(int tabs){
//这里就输出空格吧,tab太大
char[] c=new char[tabs*2];
System.out.print(new String(c));
}
static void listDir(File dir,int tabs){
File[] fs=dir.listFiles();
for(int i=0;i<fs.length;i++){
File f=fs[i];
printTab(tabs);
if(f.isFile()){

System.out.println(f.getName());
}
else if(f.isDirectory()){
System.out.println("/"+f.getName());
listDir(f,tabs+1);
}
else{
System.out.println("没有这个文件对象!");
}
}
}

解决方案 »

  1.   

    main函数这么写
    listDir(new File(args[0]),0);这里要自己保证参数为目录
      

  2.   

    public static void seekFiles(String strAlgin, String strName ) {
    File outFile = new File(strName);
    if (outFile.isDirectory()) {
    System.out.println(strAlgin + "/" + outFile.getName());
    String[] fileNames = outFile.list();
    for (int i = 0; i < fileNames.length; i++) {
    Temp.seekFiles(strAlgin+"\t" , outFile.getPath() + "\\" + fileNames[i]);
    }
    } else if (outFile.isFile()) {
    System.out.println(strAlgin+outFile.getName());
    } else {
    System.out.println("No file");
    }
    }用法:Temp.seekFiles("","D:\\JavaTools\\eclipse\\workspace\\JavaProgram_ch02");
      

  3.   

    import java.io.*;
    import javax.swing.*;public class Recurse{
    JFrame jf = new JFrame("Test");
        JTextArea jt = new JTextArea("jt", 1, 20);
        //用JScrollPane来实现JTextArea的滚动条
        JScrollPane js = new JScrollPane(jt, 
         JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 
         JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        Recurse(File f){
         jf.getContentPane().add(js);
         jf.setSize(300, 300);
         jf.setVisible(true);
         recurseFile(f, 0);
         System.out.println("End");
        }
        void recurseFile(File file, int spaces){
         String[] dir = file.list();
         for(int i = 0; i < dir.length; i++){
         //加空格
         for(int s = 0; s < spaces; s++){
         jt.append("\t");
        
         }
         jt.append(dir[i]);
         jt.append("\n");
         File temp = new File(file, dir[i]);
         //如果是一个目录,还得去搜索子目录
         if (temp.isDirectory())
         recurseFile(temp, spaces + 1);
         }
        }
        
        public static void main(String[] args){
         if(args.length <1 ){
         System.out.println("Enter args parameter");
         System.exit(0);
         }
         File f = new File(args[0]);
         if (!f.exists()){
         System.out.println("Not Exist");
         System.exit(0);
         }
         new Recurse(f);    
        }
    }你得输入一个目录给args
      

  4.   

    我是来学习的,参考各位作的,请指教,呵呵
    public void seekFiles(String strName,String tab1) {
      int j=0;
      try{
        File outFile = new File(strName);
        if (outFile.isDirectory()) {
         System.out.println("\\" + outFile.getName());
           String[] fileNames = outFile.list();
           for (int i = 0; i < fileNames.length; i++) {
           System.out.print(tab1);
           this.seekFiles(outFile.getPath() + "\\" + fileNames[i],tab1+"\t");
           }
        }
        else if (outFile.isFile()) {
          System.out.println(outFile.getName());
        }
        else {
          System.out.println("File Not Found");
        }
        //System.out.println(outFile.getParentFile().getName());
      }catch(Exception e){
      System.out.println(e);
      }
    }
    main()这样:
       t.seekFiles("d:\\File","\t");
      

  5.   

    这个问题大致上解决了多谢 treeroot(天才--天天被人踩,人才--人人都想踩)的提醒,修改了一下可以实现功能了!
      public void printTab(int tabs) {
        //打空格
        char[] c = new char[tabs];
        System.out.print(new String(c));
      }  public void listDir(File dir, int tabs) {
        //File dir = new File(str);
        File[] fs = dir.listFiles();
        for (int i = 0; i < fs.length; i++) {
          File f = fs[i];
          printTab(tabs);
          if (f.isFile()) {
            System.out.println(f.getName());
          }
          else if (f.isDirectory()) {
            System.out.println("\\" + f.getName());
            this.listDir(f, tabs + f.getName().length() + 1);
          }
          else {
            System.out.println("没有这个文件对象!");
          }
        }
      }  public static void main(String[] args) {
        CTest ct = new CTest();
        File infile = new File("F:\\JAVA\\Exercise\\3");
        System.out.println("\\" + infile.getName());
        ct.listDir(infile, infile.getName().length() + 1);
      }