小例子:java读取文件夹中的文件名并排序显示

2012-08-05  文晶 
要求:给定任意一个目录,以树形方式展示出该目录中的所有子目录和文件。另外,在展现的时候将目录排在上面,文件排在下面。每一层要加上一个缩进(tab)。
  1. import java.io.File;   
  2. import java.util.ArrayList;   
  3.   
  4. public class ListAllFile   
  5. {   
  6.     //用于判断目录或文件所在的层次   
  7.     public static int time;   
  8.        
  9.     //递归方法   
  10.     public static void deepList(File file)   
  11.     {   
  12.         if (file.isFile() || (0 == file.list().length))   
  13.         {   
  14.             return;   
  15.         }   
  16.         else   
  17.         {   
  18.             File[] files = file.listFiles();   
  19.                
  20.             files = sort(files);   
  21.                
  22.             for (File f : files)   
  23.             {   
  24.                 StringBuffer buff = new StringBuffer();   
  25.                 if (f.isFile())   
  26.                 {   
  27.                     buff.append(getTab(time));   
  28.                     buff.append(f.getName());   
  29.                 }   
  30.                 else   
  31.                 {   
  32.                     buff.append(getTab(time));   
  33.                     buff.append(f.getName());   
  34.                     buff.append("】");   
  35.                 }   
  36.                 System.out.println(buff.toString());   
  37.                    
  38.                 if (f.isDirectory())   
  39.                 {   
  40.                     time++;   
  41.                     deepList(f);   
  42.                     time--;   
  43.                 }                   
  44.             }   
  45.         }   
  46.     }   
  47.        
  48.     /**   
  49.      * 将文件数组排序,目录放在上面,文件在下面   
  50.      * @param file   
  51.      * @return   
  52.      */   
  53.     private static File[] sort(File[] file)   
  54.     {   
  55.         ArrayList<File> list = new ArrayList<File>();   
  56.         //放入所有目录   
  57.         for (File f : file)   
  58.         {   
  59.             if (f.isDirectory())   
  60.             {   
  61.                 list.add(f);   
  62.             }   
  63.         }   
  64.         //放入所有文件   
  65.         for (File f : file)   
  66.         {   
  67.             if (f.isFile())   
  68.             {   
  69.                 list.add(f);   
  70.             }   
  71.         }   
  72.            
  73.         return list.toArray(new File[file.length]);   
  74.     }   
  75.        
  76.     /**   
  77.      * 根据文件夹层数添加tab符号   
  78.      * @param time 文件夹层数   
  79.      * @return   
  80.      */   
  81.     private static String getTab(int time)   
  82.     {   
  83.         StringBuffer buff = new StringBuffer();   
  84.         for (int i = 0; i < time; i++)   
  85.         {   
  86.             buff.append("\t");   
  87.         }   
  88.         return buff.toString();   
  89.     }   
  90.        
  91.     public static void main(String[] args)   
  92.     {   
  93.         // TODO Auto-generated method stub   
  94.         File f = new File("D:/1b9e862b064769805fb005c3");   
  95.         deepList(f);   
  96.     }       
  97. }  
327°|3277 人阅读|0 条评论
登录 后发表评论