遍历获取文件夹下的所有文件

递归思路:(核心:判断当前路径是文件夹,则递归方法)

判断参数path路径是否存在;
判断参数path路径是否是文件路径;
判断参数path是否是空文件夹;
遍历当前文件夹,如果是文件夹则递归方法,如果是文件夹,则将文件加入到结果集resultList。

非递归思路:(核心:判断当前路径是文件夹,则将当前路径加入到需要遍历的LinkedList队列)

判断参数path路径是否存在;
判断参数path路径是否是文件路径;
判断参数path是否是空文件夹;
遍历当前文件夹,如果是文件夹则将文件夹路径加入到LinkedList队列,否则是文件,将文件加入到结果集resultList。

递归方式

/*** 遍历文件夹下的所有文件(递归方式)* @param path 路径(支持文件夹路径,也支持文件路径。如果path是文件夹路径,则返回该文件夹下的所有文件路径;如果path是文件路径,则返回该文件路径)* @param resultList 返回所有文件 list*/
private static void traverFolder2(String path, List<String> resultList) {File file = new File(path);// 判断参数path,路径是否存在if (! file.exists()) {System.out.println(String.format("路径[%s]不存在。", path));}// 判断参数path,是否是文件(只在第一次调用该方法时有用,第二次递归进入该方法,肯定不是文件,而是文件夹)if (file.isFile()) {resultList.add(file.getAbsolutePath());return;}// 判断参数apth, 是否是空文件夹File[] files = file.listFiles();if (files == null) {System.out.println(String.format("路径[%s]是一个空文件夹。", path));}// 遍历,递归for (File file1 : files) {if (file1.isDirectory()) {System.out.println(String.format("文件夹:%s", file1.getAbsolutePath()));traverFolder2(file1.getAbsolutePath(), resultList);} else {System.out.println(String.format("文件:%s", file1.getAbsolutePath()));resultList.add(file1.getAbsolutePath());}}
}public static void main(String[] args) {String path = "D:\\file\\awen";// 遍历文件夹下的所有文件(递归方式)List<String> resultList = new ArrayList<>();traverFolder2(path, resultList);System.out.println("文件数量: " + resultList.size() + "  resultList: " + resultList);
}

非递归方式

/*** 遍历文件夹下的所有文件(非递归方式)* @param path 路径(支持文件夹路径,也支持文件路径。如果path是文件夹路径,则返回该文件夹下的所有文件路径;如果path是文件路径,则返回该文件路径)* @return 返回所有文件 resultList*/
private static List<String> traverFolder1(String path) {// folderNum 文件夹数量  fileNum 文件数量int folderNum = 0, fileNum = 0;// 所有文件存入 resultListList<String> resultList = new ArrayList<>();// 将目录下的文件/文件夹放入listLinkedList<File> list = new LinkedList<>();File file = new File(path);// 判断参数path,路径是否存在if (! file.exists()) {System.out.println(String.format("路径[%s]不存在。", path));return resultList;}// 判断参数path,是否是文件if (file.isFile()) {resultList.add(file.getAbsolutePath());fileNum++;System.out.println("文件夹数量:" + folderNum + ",文件数量:" + fileNum);return resultList;}// 判断参数path,是否是空文件夹if (file.listFiles() == null) {System.out.println(String.format("路径[%s]是一个空文件夹。", path));return resultList;}// 如果该路径下有文件/文件夹,则加入队列listlist.addAll(Arrays.asList(file.listFiles()));// 如果list不为空,遍历while (!list.isEmpty()) {File file1 = list.removeFirst();if (file1.exists() && file1.isFile()) {resultList.add(file1.getAbsolutePath());System.out.println(String.format("文件:%s", file1.getAbsolutePath()));fileNum++;continue;}File[] files = file1.listFiles();if (files == null) {continue;} else {System.out.println(String.format("文件夹:%s", file1.getAbsolutePath()));folderNum++;}for (File f : files) {if (f.isDirectory()) {System.out.println(String.format("文件夹:%s", f.getAbsolutePath()));list.add(f);folderNum++;} else {System.out.println(String.format("文件:%s", f.getAbsolutePath()));resultList.add(f.getAbsolutePath());fileNum++;}}}System.out.println("文件夹数量:" + folderNum + ",文件数量:" + fileNum);System.out.println("resultList: " + resultList);return resultList;
}public static void main(String[] args) {String path = "D:\\file\\awen";// 遍历文件夹下的所有文件(非递归方式)List<String> list = traverFolder1(path);
}

遍历获取文件夹下的所有文件相关推荐

  1. python遍历指定文件夹的所有文件_python 统计指定文件夹下所有的文件数量,BFS方式...

    python 统计指定文件夹下所有的文件数量 本来一直是有这个需求,只是以前写的是递归的方式处理,感觉对资源的占用不友好,而且python的最大递归深度不超过1000,所以改了一下,这里用广度优先遍历 ...

  2. android 获取文件夹下的所有文件

    昨天,在做工作时,需要遍历所有一个文件夹下的所有文件夹,当时自己也不知道怎么做,后来在网上搜索了一些资料,发现其实也很简单. 1.获取SD是否可以读写,如果可以,则传入文件的路径 /*读取输入的某个文 ...

  3. java 文件 递归_JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)

    JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...

  4. 遍历读取文件夹下的所有文件

    遍历读取文件夹下的所有文件 例如,读取文件夹下,子文件夹的所有的jpg文件: import glob path = "./database/20230302/night/*/*.jpg&qu ...

  5. c语言 遍历文件夹中所有文件名,C# 遍历文件夹下所有子文件夹中的文件,得到文件名...

    假设a文件夹在F盘下,代码如下.将文件名输出到一个ListBox中 using System.Data; using System.Drawing; using System.Linq; using ...

  6. java遍历文件夹下的_Java遍历文件夹下的所以文件

    利用Java递归遍历文件夹下的所以文件,然后对文件进行其他的操作.如:对文件进行重命名,对某一类文件进行重编码.可以对某一工程下的全部.java文件进行转码成utf-8等 代码如下,这里只对文件进行重 ...

  7. 获取文件夹下的所有文件,并将对应格式文件复制移动到对应文件夹[学生信息收集和处理]

    import os import shutil 遍历所有文件夹,获取对应格式的文件数据,并复制整理到不同的文件夹 def GetDirectory(path):""":p ...

  8. C#遍历得到指定文件夹下的所有文件和子文件夹

    1.遍历指定文件夹下的所有文件 string path = Application.StartupPath + "\\data\\采集数据\\"; DirectoryInfo ro ...

  9. python批量生成文件夹_python实现批量获取指定文件夹下的所有文件的厂

    本文实例讲述了python实现批量获取指定文件夹下的所有文件的厂商信息的方法.分享给大家供大家参考.具体如下: 功能代码如下: import os, string, shutil,re import ...

  10. 利用python批量查询企业信息_python实现批量获取指定文件夹下的所有文件的厂商信息...

    本文实例讲述了python实现批量获取指定文件夹下的所有文件的厂商信息的方法.分享给大家供大家参考.具体如下: 功能代码如下: import os, string, shutil,re import ...

最新文章

  1. access导出MySQL表格_如何将Access数据库里的表内容导出到Excel
  2. 现在的位置就是对的啊,意思就是当鼠标放上去的时候,停止滚动,鼠标离开,继续滚动(跑马灯项目功能)...
  3. wxWidgets利用透明图片自定义工具条
  4. [转载]MVC、MVP以及Model2(下)
  5. 行业网站设计策划书_怎么把金融行业网站设计排版做到符合用户体验?
  6. VTK:PCA用法实战
  7. php二维数组中的查找,PHP实现二维数组中的查找算法小结
  8. 《朝花夕拾》金句摘抄(六)
  9. Windows下搭建GCC + Eclipse + OpenOCD的ARM开发环境
  10. 容器技术Docker K8s 27 容器服务ACK基础与进阶-监控管理
  11. jQuery基础(鼠标事件,表单事件,键盘事件,自定义事件 篇)
  12. Windows Phone开发之 WebClient 讲解
  13. iOS动画之CAAnimation
  14. zqoj 1819: 加加加!(油) 【水题】【郑大校赛】
  15. 云南省计算机考研排名,考研云南有哪些大学排名
  16. CSU——1043克里莫
  17. nim语言教程(一)
  18. 多因子策略-APT模型
  19. wps一直显示正在备份怎么办_wps一直显示正在保存
  20. [禅悟人生]生活中的烦恼, 一笑了之

热门文章

  1. 电子板书:Word,PPT,PDF手写批注很轻松
  2. Android实战开发-Kotlin教程(语法篇 1.1)
  3. 教你如何用两个队列实现一个栈
  4. oracle添加字段sql并添加注释
  5. html 下拉怎么固定表头,HTML Table 固定表头简单实现
  6. 计算机考研408每日一题 day161
  7. Servlet的原理和基础使用
  8. php爬虫框架使用案例QueryList,将数据爬到mysql数据库
  9. 接口测试流程及常见问答
  10. 群晖NAS系统DSM入门