递归遍历目录的缺点:遇到多层级目录时,层级越多,堆栈的负荷越大
import java.io.File;
import java.util.LinkedList;
/*
* 采用非递归方式遍历目录及其子目录的文件
*/
public class ProcessDirectory {
public static int num;//文件总量
public static void main(String[] args) {
String path = "/Users/stone/Downloads/temp";
// scanDirNoRecursion(path);
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 len = listFiles.length;
for (int i = 0; i < len; 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 len = listFiles.length;
for (int i = 0; i < len; i++) {
scanDirRecursion(listFiles[i]);
}
}
}
分享到:
相关推荐
VC 递归和非递归算法遍历磁盘文件 适合新手学习
【框图】递归遍历文件夹与非递归遍历文件夹
利用栈实现非遍历文件目录树
易语言非递归算法遍历目录源码,非递归算法遍历目录,枚举文件
windows内核,自构建IRP,防止rootkey 隐藏隐藏文件或拦截,加上非递归遍历文件(内核栈小不递归)代码加完整例子
二叉树的创建、递归遍历、非递归遍历在数据结构的学习中可以算是较难的问题了,尤其是二叉树的非递归遍历,这将导致代码量较大。因为我的代码是在Visual Studio 2019 中编写的,文件较多,为了方便需要的用户下载...
主要介绍了C++非递归遍历磁盘文件和递归遍历磁盘文件的程序示例,大家可以参考使用二种方法
C语言实现通用栈结构 递归遍历二叉树 非递归遍历二叉树 (前,中,后序) exmaple.c为测试文件
本文实例讲述了JavaScript实现多叉树的递归遍历和非递归遍历算法操作。分享给大家供大家参考,具体如下: 演示之前的准备工作 演示项目的文件结构: index.html jsonData.js recurrenceTree.js noRecurrenceTree.js ...
易语言非递归算法遍历目录源码,源码是易语言学习应用教程。
各种遍历二叉树的算法包括非递归,遍历算法对文件目录的管理相当有效
树的遍历,递归和非递归实现方式,工程源码。 在Dep C++里面的工程文件。
本代码包括三部分的内容,其一是Java文件遍历,其二是Java的非递归前序,中序以及后序遍历,最后是前后序编码的生成问题。
VC对磁盘文件遍历搜索的递归算法和非递归算法 里面的文档是讲解递归算法和递归算法的 里面还有一个Vc工程文件,是我自己写的,关于非递归算法,其实里面那些被注释掉的部分是递归算法,大家仔细看看就知道了,
后序遍历的非递归算法要比非递归前序遍历和中序遍历难一些,本文件提供结构和程序以便同行者下载使用,有问题请留言
数据结构中非递归前序遍历 VC6.0 包括源程序和CPP文件
二叉树的递归遍历算法非常好写。这个.cpp文件里是二叉树的非递归遍历!
本篇文章主要介绍了JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) ,具有一定的参考价值,有兴趣的可以了解一下。
主要介绍了Java文件操作之按行读取文件和递归遍历目录的方法,遍历目录文中分别举了递归和非递归的例子,需要的朋友可以参考下