java 递归扫描文件夹_java扫描文件夹下面的所有文件(递归与非递归实现)
java中扫描指定文件夹下面的所有文件
扫描一个文件夹下面的所有文件,因为文件夹的层数没有限制可能多达几十层几百层,通常会采用两种方式来遍历指定文件夹下面的所有文件。
递归方式
非递归方式(采用队列或者栈实现)
下面我就给出两种方式的实现代码,包括了递归与非递归实现,code如下所示。
package q.test.filescanner;
import java.io.File;
import java.util.ArrayList;
import java.util.LinkedList;
import q.test.filescanner.exception.ScanFilesException;
/**
* @author 邪恶小先生
*/
public class FolderFileScanner {
private static ArrayList scanFiles = new ArrayList();
/**linkedList实现**/
private static LinkedList queueFiles = new LinkedList();
/**
* TODO:递归扫描指定文件夹下面的指定文件
* @return ArrayList
* @author 邪恶小先生(LQ)
* @time 2017年11月3日
*/
public static ArrayList scanFilesWithRecursion(String folderPath) throws ScanFilesException{
ArrayList dirctorys = new ArrayList();
File directory = new File(folderPath);
if(!directory.isDirectory()){
throw new ScanFilesException('"' + folderPath + '"' + " input path is not a Directory , please input the right path of the Directory. ^_^...^_^");
}
if(directory.isDirectory()){
File [] filelist = directory.listFiles();
for(int i = 0; i < filelist.length; i ++){
/**如果当前是文件夹,进入递归扫描文件夹**/
if(filelist[i].isDirectory()){
dirctorys.add(filelist[i].getAbsolutePath());
/**递归扫描下面的文件夹**/
scanFilesWithRecursion(filelist[i].getAbsolutePath());
}
/**非文件夹**/
else{
scanFiles.add(filelist[i].getAbsolutePath());
}
}
}
return scanFiles;
}
/**
*
* TODO:非递归方式扫描指定文件夹下面的所有文件
* @return ArrayList
* @param folderPath 需要进行文件扫描的文件夹路径
* @author 邪恶小先生(LQ)
* @time 2017年11月3日
*/
public static ArrayList scanFilesWithNoRecursion(String folderPath) throws ScanFilesException{
File directory = new File(folderPath);
if(!directory.isDirectory()){
throw new ScanFilesException('"' + folderPath + '"' + " input path is not a Directory , please input the right path of the Directory. ^_^...^_^");
}
else{
//首先将第一层目录扫描一遍
File [] files = directory.listFiles();
//遍历扫出的文件数组,如果是文件夹,将其放入到linkedList中稍后处理
for(int i = 0; i < files.length; i ++){
if(files[i].isDirectory()){
queueFiles.add(files[i]);
}else{
//暂时将文件名放入scanFiles中
scanFiles.add(files[i].getAbsolutePath());
}
}
//如果linkedList非空遍历linkedList
while(!queueFiles.isEmpty()){
//移出linkedList中的第一个
File headDirectory = queueFiles.removeFirst();
File [] currentFiles = headDirectory.listFiles();
for(int j = 0; j < currentFiles.length; j ++){
if(currentFiles[j].isDirectory()){
//如果仍然是文件夹,将其放入linkedList中
queueFiles.add(currentFiles[j]);
}else{
scanFiles.add(currentFiles[j].getAbsolutePath());
}
}
}
}
return scanFiles;
}
}
java 递归扫描文件夹_java扫描文件夹下面的所有文件(递归与非递归实现)相关推荐
- java web文件夹_JAVA WEB项目文件夹上传下载解决方案
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...
- java 扫描jar包_java 扫描指定包(包括jar包)
/*未经本人同意,禁止转载. 做工程时,有时候需要扫描指定包,或者指定jar包,甚至扫描指定包下指定类,本文章详细讲解如何扫描,以及智能扫描,小编讲的很详细了仔细看. 以下讲解, 包扫描和jar包扫描 ...
- java 删除文件失败_java中File的delete()方法删除文件失败的原因
一般来说 java file.delete失败 有以下几个原因 1.看看是否被别的进程引用,手工删除试试(删除不了就是被别的进程占用) 2.file是文件夹 并且不为空,有别的文件夹或文件, 3.极有 ...
- java linux创建文件夹_java web工程在linux下创建文件夹和文件
具体的创建方法参照下面的实例: public class FileTest { public static void main(String[] args) { // 根据系统的实际情况选择目录分隔符 ...
- java 获取ftp 文件路径_java在浏览器上获取FTP读文件路径
展开全部 问一下,你是62616964757a686964616fe4b893e5b19e31333337623437想做ftp上传下载么? 首先你需要安装一个ftp服务端程序,启动起来,然后下载一个 ...
- 另一个.java文件调用_java - 如何调用另一个类“写文件”的方法? - SO中文参考 - www.soinside.com...
在我的Android应用程序,我想有一类处理所有"写入/读取到文本文件"的行动.所以,我根本就调用我的readUserFile.java文件我想的方法.但我的方法将不会在该文件中工 ...
- java导出pdf 含图片_java 生成PDF含图片和中文件实现代码
1,所需包 iText.jar iTextAsian.ar(支持中包) 2,列子 package com.pdf; import java.awt.Color; import java.io.File ...
- java io流文件损坏_java使用io流下载.docx. xlsx文件,出现文件损坏提示
介绍 在使用io流下载服务器上的资源文件时,出现以下提示:但是选择"是"后文件可以正常打开 参考 代码如下: [codesyntax lang="java"] ...
- java http上传文件到_java使用http往服务器上传文件(图片)
使用http往服务端上传文件,要使用MultipartEntity,需要引入httpmime包,在附件中. class="java">public static String ...
最新文章
- 论坛报名 | 人工智能与疫情精准防控
- SQL临时表的生存期问题
- 【Groovy】编译时元编程 ( ASTTransformation#visit 方法获取 Groovy 源文件 )
- 干货 | 懂点儿经济学有什么用?
- CSS进阶(十)position:relative
- Kinect1和Kinect2的区别
- visual studio 删除附加项
- linux percpu机制解析
- 【报告分享】 2020-2021年数字内容产业趋势报告-企鹅智库 (附下载)
- JavaScript实现的转盘抽奖html页面前端源码
- JAVA方法3-方法的重载
- HMAC-MD5签名的Java实现
- 国网铅封电表红外通讯采集器是干什么用的?一分钟搞懂
- 第27次CCF-CSP计算机软件能力认证(2022-09-18)
- Linux常用bash命令
- Visual Studio(VS)的各个版本下载及安装
- oracle 导出数据 utl,oracle 使用 UTL_FILE 导出表数据到txt文件
- stm32Cubemx实用篇(三):DAC电压输出和ADC电压检测以及内部温度传感器测温
- 车站计算机系统具有自诊断功能,第五节自动检售票系统.ppt
- 深入理解Linux多线程
热门文章
- 图数据结构,以及使用递归方式实现图的深度优先和广度优先遍历
- c语言如何让窗口无法关闭,无法关闭窗口的程序
- windows登录linux xceed,Xceed Zip for ActiveX
- 精诚MES智能制造公司在数字化制造中发挥核心作用
- 腾讯QQ2014最新版官方正式版下载
- set.stream使用 java_深入浅出Java8中parallelStream的使用
- 【ALGO】100盏灯问题
- 维基解秘的兄弟网站Cryptome.org
- redis watchdog_Redis分布式事务框架Redisson源码解析(一)
- 什么是netty--通俗易懂