对于一个嵌套的目录,获取目录下所有的文件,可以使用一下两种方式:

1、递归方法:

static List<String> ergodic(File file, List<String> resultFileName) {File[] files = file.listFiles();if (files == null)return resultFileName;// 判断目录下是不是空的for (File f : files) {if (f.isDirectory()) {// 判断是否文件夹//resultFileName.add(f.getPath());ergodic(f, resultFileName);// 调用自身,查找子目录} elseresultFileName.add(f.getPath());}return resultFileName;
}

File类提供了如下两个方法:

  • file.list():返回目录下文件和子目录名;(不会递归)
  • file.listFiles():返回目录下文件和子目录File对象;(不会递归)

2、Files.walk():

在jdk8中,可以使用walk方法递归的去查找目录下所有文件,例如:

static void walk(String path) throws Exception {try (Stream<Path> paths = Files.walk(Paths.get(path))) {paths.filter(Files::isRegularFile).forEach(System.out::println);}
}

说明

  • 上例使用了Try with Resources模式,它可以确保无论在什么情况下,流都将关闭。
  • walk方法会自动递归子目录;

Files.walk通过递归遍历以给定起始文件为根的文件树来返回由Path延迟填充的流。 文件树是深度优先遍历的,有两种重载的Files.walk方法:

  • maxDepth参数,设置要递归的深度;Files.walk(Paths.get(path),2)
  • 默认不会自动跟随符号链接, 设置options参数FOLLOW_LINKS选项,则遵循符号链接。 Files.walk(Paths.get(path),FileVisitOption.FOLLOW_LINKS)

接下来看一些示例:

var dirName = "C:/Users/Jano/Downloads";//过滤出目录
try (Stream<Path> paths = Files.walk(Paths.get(dirName))) {paths.filter(Files::isDirectory).forEach(System.out::println);
}//按后缀名过滤
try (Stream<Path> paths = Files.walk(Paths.get(dirName), 2)) {paths.map(path -> path.toString()).filter(f -> f.endsWith(".pdf")).forEach(System.out::println);
}

更多示例可以查看:https://vimsky.com/examples/detail/java-method-java.nio.file.Files.walk.html

java 递归获取目录下所有文件相关推荐

  1. 【Java基础】递归输出目录下所有文件路径

    递归输出目录下所有文件路径 import java.io.File;public class FileTest {public static void main(String[] args) {// ...

  2. JxlExcelUtil生成Excel供SFTP推送Java实现获取目录下最新的excel

    外汇交易中心,某版本需求变更:交易后将每天定时生成的全量黄金成交编号映射关系文件推送至金交所. 设计: 定时任务跑批实现. 1.根据传入的参数是否是给黄金交易所判断 isSFTP.传参, 以下方法组装 ...

  3. Java实现指定目录下的文件查找

    Java实现指定目录下的文件查找 入门Java实现文件的查找功能较为简单,主要有以下两种: 1.给出文件名,查找目录及其子目录中是否存在 2.给出后缀名,查找目录及其子目录中相关的文件 题型一: 题目 ...

  4. 关于BaiduPCS-Go不能用问题解决,报错【获取目录下的文件列表 遇到错误, 远端服务器返回错误】

           BaiduPCS-Go不能使用报错:获取目录下的文件列表 遇到错误, 远端服务器返回错误, 代码: 4, 消息: No permissionto do this operation, 路 ...

  5. java 递归 遍历目录下的所有文件

    public class Demo{static int level;public static void main(String[] args) throws IOException {//利用递归 ...

  6. 【Java】获取目录及其子目录文件的相关事宜

    获取目录及其子目录文件的代码 public class Main {public static void main(String[] args) {String path = "D:/&qu ...

  7. java删除Linux目录下的文件夹

    在java程序中删除Linux目录下的文件夹主要步骤如下: String path = "/home/deledir";//文件夹路径 String[] cmd = new Str ...

  8. Golang获取目录下的文件及目录信息

    一.获取当前目录下的文件或目录信息(不包含多级子目录) func main() {pwd,_ := os.Getwd()//获取文件或目录相关信息fileInfoList,err := ioutil. ...

  9. python获取文件夹下文件_Python 获取目录下的文件列表与内容

    下面的python例子是列举用户目录下面的文件 import os import sys #info=os.getcwd() #listfile=os.listdir(os.getcwd()) inf ...

最新文章

  1. koa+mysql+vue+socket.io全栈开发之web api篇
  2. 学习 慕课网 PHP工程师学习计划--我的笔记汇总
  3. Oracle配置监听和连接,已经一些比较容易混淆的相关概念
  4. python中的id()函数及读取list的例子
  5. python发送邮件及附件
  6. 台湾大学林轩田机器学习基石课程学习笔记5 -- Training versus Testing
  7. vs矩形框边框线显示被选中的区域;_条形码区域解码:Web小工具
  8. 3.linux安装vsftpd服务
  9. Javascript 中 JSON 与对象 的相互转换
  10. 关于Ip地址分配规则(IPV4)
  11. qt获取桌面路径(暂定应用Windows)
  12. c++用一级运算比较大小_python学习五-python运算符
  13. 推荐系统之协同过滤算法
  14. 【bootstraptable】JS访问用户媒体设备摄像头,进行拍照保存
  15. 一起来自制水果甜品吧
  16. 华为交换机SNMP读取LLDP邻居信息的特殊配置
  17. 汉字简易加密解密小程序
  18. 室友吃个泡面的时间,我用十几行Python代码下载了几千张手机壁纸
  19. 老黄历java_JQ实现程序员老黄历
  20. 用 Python 自动生成数据日报!

热门文章

  1. 思维导图 iMindMap 初用
  2. 精美动态欧美风通用PPT模板
  3. 高并发下的网络 IO 模型设计
  4. python numpy逆_python-具有numpy的N * M * M张量的矢量化(部分)逆
  5. 香蕉派开源硬件开发板 Banana Pi BPI M2Pro Amlogic S905X3 主板
  6. Java Mail给163@com发送邮件,报554 DT:SPM错误
  7. 用 Win2003 架设邮件服务器
  8. 数据结构之——《双向链表》
  9. api响应泛型参数 swagger_你还在用丝袜哥(Swagger)?今天不如换换口味!
  10. 三菱变频器故障直观检查法