递归遍历目录的缺点:遇到多层级目录时,层级越多,堆栈的负荷越大。
-
import java.io.File;
-
import java.util.LinkedList;
-
-
-
-
-
public class ProcessDirectory {
-
public static int num;
-
-
public static void main(String[] args) {
-
String path = "/Users/Jackie/Downloads/temp";
-
-
-
scanDirRecursion(new File(path));
-
System.out.println(path + "目录下共有文件数量为:" + num);
-
}
-
-
-
public static void scanDirNoRecursion(String path) {
-
LinkedList list = new LinkedList();
-
File file = new File(path);
-
if (file.isFile()) {
-
System.out.println(file.getAbsolutePath());
-
num++;
-
return;
-
}
-
list.add(file);
-
while (!list.isEmpty()) {
-
File f = (File) list.removeFirst();
-
File[] listFiles = f.listFiles();
-
if (listFiles == null) {
-
return;
-
}
-
int length
= listFiles.length;
-
for (int i = 0; i < length; i++) {
-
if (listFiles[i].isDirectory()) {
-
list.add(listFiles[i]);
-
} else {
-
System.out.println(listFiles[i].getAbsolutePath());
-
num++;
-
}
-
}
-
}
-
System.out.println(path + "目录下共有文件数量为:" + num);
-
}
-
-
-
public static void scanDirRecursion(File file) {
-
if (file.isFile()) {
-
System.out.println(file.getAbsolutePath());
-
num++;
-
return;
-
}
-
File[] listFiles = file.listFiles();
-
int length
= listFiles.length;
-
for (int i = 0; i < length; i++) {
-
scanDirRecursion(listFiles[i]);
-
}
-
}
-
}
递归与非递归遍历文件目录
原文:http://blog.csdn.net/shineflowers/article/details/41723123