2 sonofbaba sonofbaba 于 2017.09.12 22:30 提问

各位大佬 有点小问题想不通 file问题 遍历所有目录及文件

各位大佬 有点小问题想不通 file问题 遍历所有目录及文件

public void traverseFolder1(String path) {
int fileNum = 0, folderNum = 0;
File file = new File(path);
if (file.exists()) {
LinkedList list = new LinkedList();
File[] files = file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
list.add(file2);
foldeNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
fileNum++;
}
}
File temp_file;
while (!list.isEmpty()) {
temp_file = list.removeFirst();
files = temp_file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
list.add(file2);
folderNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
fileNum++;
}
}
}
} else {
System.out.println("文件不存在!");
}
System.out.println("文件夹共有:" + folderNum + ",文件共有:" + fileNum);

}
    各位大佬  
    这个是遍历所有文件夹以及所有文件夹下的文件的
    我想问下面为什么还要加个while循环再次遍历呢

2个回答

caozhy
caozhy   Ds   Rxr 2017.09.13 08:40

这本质上是用list模拟堆栈,从而实现不用递归去遍历一个目录结构。实际上用递归更简单和容易理解。

sonofbaba
sonofbaba 两种不是一样吗 有什么区别啊 为什么还要加一遍循环
2 个月之前 回复
Small_Mouse0
Small_Mouse0   Ds   Rxr 2017.09.13 09:39

下面加while遍历是为了找,文件夹下的文件

只有上面那一个只能遍历一层,,想访问文件夹下的文件,,就需要加个while,,循环遍历

楼上说到递归了,,,此处相当于list模拟堆栈,,,栈和递归可以转换

Csdn user default icon
上传中...
上传图片
插入图片