1. public class FileList { 
  2.     private static int num;//定义往下循环了多少层 
  3.     public static void deepList(File file){ 
  4.         if (file.isFile() || file.listFiles().length==0) { 
  5.             return
  6.         } 
  7.         else { 
  8.             File[] files = file.listFiles(); 
  9.             files = sorted(files); 
  10.             for(File f : files){ 
  11.                 StringBuffer buffer = new StringBuffer(); 
  12.                 if (f.isFile()) { 
  13.                     buffer.append(getTab(num)); 
  14.                     buffer.append(f.getName()); 
  15.                      
  16.                 }else { 
  17.                     buffer.append(getTab(num)); 
  18.                     buffer.append(f.getName()+"\\"); 
  19.                 } 
  20.                 System.out.println(buffer.toString()); 
  21.                 if (f.isDirectory()) { 
  22.                     num++; 
  23.                     deepList(f); 
  24.                     num--; 
  25.                 } 
  26.             } 
  27.         } 
  28.     } 
  29.     //对文件夹中的文件进行排序,文件夹在前、文件在后 
  30.     public static File[] sorted(File[] files){ 
  31.         ArrayList<File> sorted = new ArrayList<File>(); 
  32.         for (File file : files) { 
  33.             if (file.isFile()) { 
  34.                 sorted.add(file); 
  35.             } 
  36.             if (file.isDirectory()) { 
  37.                 sorted.add(file); 
  38.             } 
  39.         } 
  40.         return sorted.toArray(new File[files.length]); 
  41.     } 
  42.     //在每个文件后加上tab 
  43.     public static String getTab(int num){ 
  44.         StringBuffer buffer = new StringBuffer(); 
  45.         for (int i = 0; i < num; i++) { 
  46.             buffer.append("\t"); 
  47.         } 
  48.         return buffer.toString(); 
  49.     } 
  50.      
  51.     public static void main(String[] args) throws IOException { 
  52.         deepList(new File("")); 
  53.     }