六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 38|回复: 0

Java遍历文件夹的2种方法:

[复制链接]

升级  13.33%

16

主题

16

主题

16

主题

秀才

Rank: 2

积分
70
 楼主| 发表于 2013-1-26 14:42:15 | 显示全部楼层 |阅读模式
A:不使用递归import java.io.File;import java.util.LinkedList;public class Folder {    public static void main(String[] args) {                long a = System.currentTimeMillis();                LinkedList<File> list = new LinkedList<File>();        File dir = new File("c:/test");        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 Folder2 {    private static ArrayList<String> filelist = new ArrayList<String>();         public static void main(String[] args) {                long a = System.currentTimeMillis();        refreshFileList("c:/test");        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性能相对好一些。 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表