Java中使用遍历文件夹的2种方法

    Java中使用遍历文件夹的2种方法,String strFileName = files[i].getAbsolutePath().toLowerCase();

    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性能相对好一些。

posted on 2011-03-21 13:19  国信安  阅读(359)  评论(0编辑  收藏  举报

导航