博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Java遍历文件夹的2种方法

Posted on 2010-11-03 00:12  BradyChen  阅读(4635)  评论(1编辑  收藏  举报

A.不使用递归:

import java.io.File;import java.util.LinkedList;public class FileSystem {    public static void main(String[] args) {                long a = System.currentTimeMillis();                LinkedList list = new LinkedList();        File dir = new File("c:\\java\\");        File file[] = dir.listFiles();        for (int i = 0; i < file.length; i++) {            if (file[i].isDirectory())                list.add(file[i]);            else                System.out.println(file[i].getAbsolutePath());        }        File tmp;        while (!list.isEmpty()) {            tmp = list.removeFirst();            if (tmp.isDirectory()) {                file = tmp.listFiles();                if (file == null)                    continue;                for (int i = 0; i < file.length; i++) {                    if (file[i].isDirectory())                        list.add(file[i]);                    else                        System.out.println(file[i].getAbsolutePath());                }            } else {                System.out.println(tmp.getAbsolutePath());            }        }                System.out.println(System.currentTimeMillis() - a);    }}                      
 

B.使用递归:

       import java.io.File;import java.util.ArrayList;public class FileSystem1 {    private static ArrayList filelist = new ArrayList();         public static void main(String[] args) {                long a = System.currentTimeMillis();        refreshFileList("c:\\java");        System.out.println(System.currentTimeMillis() - a);    }    public static void refreshFileList(String strPath) {         File dir = new File(strPath);         File[] files = dir.listFiles();                 if (files == null)             return;         for (int i = 0; i < files.length; i++) {             if (files[i].isDirectory()) {                 refreshFileList(files[i].getAbsolutePath());             } else {                 String strFileName = files[i].getAbsolutePath().toLowerCase();                System.out.println("---"+strFileName);                filelist.add(files[i].getAbsolutePath());                                }         }     }}
结论:经过测试,使用递归的方法B性能相对好一些。