1F Java中遍历文件夹的2种方法 唧唧 Post by : 2009-06-23 15:05:46.0
A.不使用递归:
java代码
- package test;
-
- import java.io.File;
- import java.util.LinkedList;
-
- public class FilesList {
- 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 = (File) 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)+" ms");
- }
- }
B.使用递归:
java代码
- package test;
-
- import java.io.File;
- import java.util.ArrayList;
-
- public class FilesList {
-
- 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)+" ms");
- }
-
- 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性能相对好一些。
|