原文地址:
http://www.cnblogs.com/azhqiang/p/4596793.html
JAVA 遍历文件夹下的所有文件(递归调用和非递归调用)
JAVA 遍历文件夹下的所有文件(递归调用和非递归调用)
1. 不使用递归的方法调用
public void traverseFolder1(String path) {
int fileNum = 0, folderNum = 0;
File file = new File(path);
if (file.exists()) {
LinkedList<File> list = new LinkedList<File>();
File[] files = file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
list.add(file2);
fileNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
folderNum++;
}
}
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);
fileNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
folderNum++;
}
}
}
} else {
System.out.println("文件不存在!");
}
System.out.println("文件夹共有:" + folderNum + ",文件共有:" + fileNum);
}
2. 使用递归的方法调用
public void traverseFolder2(String path) {
File file = new File(path);
if (file.exists()) {
File[] files = file.listFiles();
if (files.length == 0) {
System.out.println("文件夹是空的!");
return;
} else {
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
traverseFolder2(file2.getAbsolutePath());
} else {
System.out.println("文件:" + file2.getAbsolutePath());
}
}
}
} else {
System.out.println("文件不存在!");
}
}
3. 判断扩展名
public static List<File> getFileList(String strPath) {
File dir = new File(strPath);
File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组
if (files != null) {
for (int i = 0; i < files.length; i++) {
String fileName = files[i].getName();
if (files[i].isDirectory()) { // 判断是文件还是文件夹
getFileList(files[i].getAbsolutePath()); // 获取文件绝对路径
} else if (fileName.endsWith("avi")) { // 判断文件名是否以.avi结尾
String strFileName = files[i].getAbsolutePath();
System.out.println("---" + strFileName);
filelist.add(files[i]);
} else {
continue;
}
}
}
return filelist;
}
分享到:
相关推荐
本篇文章主要介绍了JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) ,具有一定的参考价值,有兴趣的可以了解一下。
如标题所示,遍历文件夹下的所有文件,主要功能如下: 传入一个路径,读取路径里面所有的文件 遍历读取的文件,判断当前文件是文件还是文件夹 当前目录为文件,打印出当前文件绝对路径 当前目录为文件夹,获取文件夹...
二叉树先序、中序、后序三种遍历的非递归算法
Java中递归逻辑循环调用解压zip里面所有的压缩包 Java中递归逻辑循环调用解压zip里面所有的压缩包
typedef char TElemType; typedef int Status; typedef char SElemType; //二叉树的二叉链表存储表示 typedef struct BiTNode { TElemType data;... BiTNode *lchild, *rchild;...Status StackEmpty(SqStack S)
思路: 遍历文件夹下面的文件夹 如果文件夹名称等于”.svn”,则修改文件夹的属性(因为”....for parent,dirnames,filenames in os.walk(rootdir): #遍历文件夹下面的所有文件夹 for dirname in dirnames: if dirname
调用MFC库的console程序,VC2010下编译与运行正常。 其中pmain为主程序,CSpread为包含遍历函数的类文件。 代码尽量做到最简单。 测试所用的FTP服务器是本地服务器,基于windows8.1系统自带服务直接创建,详情请百度...
Java获取文件的名称,以及文件创建时间、最后修改时间、访问时间Java代码示例,以及使用递归调用方法遍历文件夹,存入list中
使用邻接表表示法创建无向图,然后使用非递归算法进行深度优先遍历和广度优先遍历
用递归来遍历出一棵树,包括sql代码以及完整的代码实现。
用c语言所描述的二叉树遍历,实现了相应的功能,遍历后出现先序遍历和中序遍历
众所周知,深度遍历的递归调用已经普遍,而广度遍历的递归调用较为麻烦。 但是我们老师布置了一道创新题目,让我们实现广度遍历的递归调用。 以下就是我使用递归的思想进行广度遍历。
c# 基于TreeView递归调用遍历系统盘符的应用实例,功能很强大,注释很清楚。
1、先序遍历二叉树 递归实现思想:若二叉树为空,返回。否则 1)遍历根节点;2)先序遍历左子树;3)先序遍历右子树; 代码: 代码如下:... //递归调用,先序遍历左子树 PreOrder(root->rchild); //递归调用,先
有关递归调用的概念和实例,非常实用,能使您更深入明白递归的实用
在Java中,实现二叉树的先序遍历可以通过递归来完成。先序遍历的顺序是:首先访问根节点,然后递归地先序遍历左子树,最后递归地先序遍历右子树。 在这段代码中,Node类定义了二叉树的节点,包含数据域和指向左右子...
比递归调用的速度要快很多。甚至到了如果不采用延时,msxml自身函数都会返回错误。
在这段代码中,Node类定义了二叉树的节点,BinaryTree类包含一个指向根节点的指针和postOrder方法,用于递归地进行后序遍历。printPostOrder方法调用postOrder方法并打印出遍历的结果。 在Main类中,我们创建了一个...
1:非递归方法: 代码如下:// File Name: CSearch.h #pragma once#include <vector>#include <atlstr>#include class Search{private: std::vector<CString> m_strPath; // 保存查找到了文件路径 std::vector...
按先序遍历的扩展序列建立二叉树的二叉链表存储结构,实现二叉树先序、中序、后序遍历的递归算法,实现二叉树中序遍历的非递归算法,实现二叉树层次遍历的非递归算法(要求使用顺序队列,调用顺序队列基本操作...