查看完整版本: [-- Java中遍历文件夹的2种方法 --]

风信Java论坛 ›› Java 基础开发 ›› Java中遍历文件夹的2种方法 登录 -> 注册

1F Java中遍历文件夹的2种方法   唧唧 Post by : 2009-06-23 15:05:46.0

A.不使用递归:

   java代码
  1. package test;  
  2.  
  3. import java.io.File;  
  4. import java.util.LinkedList;  
  5.  
  6. public class FilesList {  
  7.     public static void main(String[] args) {  
  8.  
  9.         long a = System.currentTimeMillis();  
  10.  
  11.         LinkedList list = new LinkedList();  
  12.         File dir = new File("c:\\java\\");  
  13.         File file[] = dir.listFiles();  
  14.         for (int i = 0; i < file.length; i++) {  
  15.             if (file[i].isDirectory())  
  16.                 list.add(file[i]);  
  17.             else 
  18.                 System.out.println(file[i].getAbsolutePath());  
  19.         }  
  20.         File tmp;  
  21.         while (!list.isEmpty()) {  
  22.             tmp = (File) list.removeFirst();  
  23.             if (tmp.isDirectory()) {  
  24.                 file = tmp.listFiles();  
  25.                 if (file == null)  
  26.                     continue;  
  27.                 for (int i = 0; i < file.length; i++) {  
  28.                     if (file[i].isDirectory())  
  29.                         list.add(file[i]);  
  30.                     else 
  31.                         System.out.println(file[i].getAbsolutePath());  
  32.                 }  
  33.             } else {  
  34.                 System.out.println(tmp.getAbsolutePath());  
  35.             }  
  36.         }  
  37.  
  38.         System.out.println("执行时间 "+(System.currentTimeMillis() - a)+" ms");  
  39.     }  

B.使用递归:

   java代码
  1. package test;  
  2.  
  3. import java.io.File;  
  4. import java.util.ArrayList;  
  5.  
  6. public class FilesList {  
  7.       
  8.     private static ArrayList filelist = new ArrayList();   
  9.     public static void main(String[] args) {  
  10.  
  11.         long a = System.currentTimeMillis();  
  12.  
  13.         refreshFileList("c:\\java");  
  14.  
  15.         System.out.println("执行时间 "+(System.currentTimeMillis() - a)+" ms");  
  16.     }  
  17.       
  18.     public static void refreshFileList(String strPath) {   
  19.         File dir = new File(strPath);   
  20.         File[] files = dir.listFiles();   
  21.           
  22.         if (files == null)   
  23.             return;   
  24.         for (int i = 0; i < files.length; i++) {   
  25.             if (files[i].isDirectory()) {   
  26.                 refreshFileList(files[i].getAbsolutePath());   
  27.             } else {   
  28.                 String strFileName = files[i].getAbsolutePath().toLowerCase();  
  29.                 System.out.println("---"+strFileName);  
  30.                 filelist.add(files[i].getAbsolutePath());                      
  31.             }   
  32.         }   
  33.     }  
  34.  

结论:经过测试,使用递归的方法B性能相对好一些。


风信Java论坛 ›› Java 基础开发 ›› Java中遍历文件夹的2种方法 登录 -> 注册

查看完整版本: [-- Java中遍历文件夹的2种方法 --]
CopyRight © 2008-2009 JavaWind.Net Studio All Rights Reserved
Powered By JWind.BBS Vesion 1.0.0 Beta1 Processed in 8 ms,0 (Queries)  Gzip enabled
粤ICP备07511478号