使用java8 API遍历过滤文件目录及子目录和隐藏文件示例详解

1. 使用Files.list()迭代目录及其子目录文件

Files.list()可以迭代目录及其子目录文件

Files.list(Paths.get(".")) //当前目录
	 .forEach(System.out::println);

输出:

.\filename1.txt
.\directory1
.\filename2.txt
.\Employee.java

2. 使用 filter表达式过滤文件

过滤器函数引用,isRegularFile表示普通文件

Files.list(Paths.get("."))
		.filter(Files::isRegularFile) //过滤器:只保留普通文件,过滤掉文件目录
		.forEach(System.out::println);

输出结果如下:

.\filename1.txt
.\filename2.txt
.\Employee.java

也可以使用lambda表达式进行过滤

Files.list(Paths.get("."))
  .filter(s -> s.startsWith("file")) //过滤器:只保留以file开头的文件及目录
  .forEach(System.out::println);

3. 使用 Files.newDirectoryStream()迭代目录及其子目录文件

另一种更灵活的遍历目录的方式Files.newDirectoryStream(),如果我们的目录文件又深又多,DirectoryStream可以使迭代目录的速度更快。

Files.newDirectoryStream(Paths.get("."))
		.forEach(System.out::println);

输出结果与Files.list()效果一致

.\filename1.txt
.\directory1
.\filename2.txt
.\Employee.java

4. 使用Files.newDirectoryStream()迭代指定文件后缀名的文件

我们可以为Files.newDirectoryStream()传递第二个参数,指定过滤条件,比如以java(结尾)为后缀名的文件

Files.newDirectoryStream(Paths.get("."),
		path -> path.toString().endsWith(".java"))
		.forEach(System.out::println);

Output:

.\Employee.java

5. 遍历目录内的隐藏文件

要查找所有隐藏文件,可以在过滤器中使用lambda表达式file -> file.isHidden()。或者,使用java8的方法引用。

final File[] files = new File(".").listFiles(file -> file.isHidden());
//or
final File[] files = new File(".").listFiles(File::isHidden);

到此这篇关于使用java8API遍历过滤文件目录及子目录及隐藏文件示例详解的文章就介绍到这了,更多相关java8API遍历过滤文件目录及子目录及隐藏文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java递归遍历文件目录代码实例

    这篇文章主要介绍了Java递归遍历文件目录代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在读取文件降序输出单词及其个数的基础上,将txt文件存入文件夹中,开始递归遍历文件目录,之后输出txt文件中的单词及其个数,仍然是降序排列. 代码如下 import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.Map

  • java 文件目录读写删除操作详细实现代码

    一.获得控制台用户输入的信息 public String getInputMessage() throws IOException...{          System.out.println("请输入您的命令∶");          byte buffer[]=new byte[1024];          int count=System.in.read(buffer);          char[] ch=new char[count-2];//最后两位为结束符,删去不要

  • java 使用线程监控文件目录变化的实现方法

    java 使用线程监控文件目录变化的实现方法 由于某种特殊的需求.弄了个使用线程监控文件目录变化的 代码基本如下.其中减去一些复杂的操作.只留下基本代码: package com.file; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; public

  • Java编程获取文件列表及子文件目录的方法(非递归)

    废话不谈,直接进入正题,理解见代码注释. // 非递归 public List<String> scanFiles(String path) { List<String>filePaths = new ArrayList<String>(); LinkedList<File> list = new LinkedList<File>(); File dir = new File(path); File[] file = dir.listFiles(

  • 使用java8 API遍历过滤文件目录及子目录和隐藏文件示例详解

    1. 使用Files.list()迭代目录及其子目录文件 Files.list()可以迭代目录及其子目录文件 Files.list(Paths.get(".")) //当前目录 .forEach(System.out::println); 输出: .\filename1.txt .\directory1 .\filename2.txt .\Employee.java 2. 使用 filter表达式过滤文件 过滤器函数引用,isRegularFile表示普通文件 Files.list(P

  • Java8新特性Optional类及新时间日期API示例详解

    目录 Optional类 以前对null的处理 Optional类介绍 Optional的基本使用 Optional的常用方法 新时间日期API 旧版日期时间的问题 新日期时间API介绍 日期时间的常见操作 日期时间的修改和比较 格式化和解析操作 Instant类 计算日期时间差 时间校正器 日期时间的时区 JDK新的日期和时间API的优势 Optional类 面试官:Optional类了解过吗? 这个Optional类主要是解决空指针的问题. 以前对null的处理 @Test public v

  • Gin与Mysql实现简单Restful风格API实战示例详解

    目录 It works main.go 编译运行 数据库 CURD 增删改查 增 查 查询列表 Query 查询单条记录 QueryRow 改 删 组织代码 封装模型方法 Handler函数 组织项目 数据库处理 数据model封装 handler 路由 分组路由 app入口 总结 我们已经了解了Golang的Gin框架.对于Webservice服务,restful风格几乎一统天下.Gin也天然的支持restful.下面就使用gin写一个简单的服务,麻雀虽小,五脏俱全.我们先以一个单文件开始,然

  • Python文件目录操作常用模块的使用详解

    目录 1. os模块 1.1 获取系统信息 1.2  工作目录与路径相关的操作 1.3 判断是否文件或目录以及指定文件目录是否存在 1.5 串连创建或者分离一个文件目录路径 1.6 执行外部shell命令 2. shutil模块 2.1 拷贝文件 2.2 移动或重命名文件 2.3 拷贝文件夹/删除文件夹 2.4 生成压缩文件 2.5 解压文件 Python中用于文件目录操作的常用模块有os, shutil,pathlib等. os就是“Operating System”的缩写,顾名思义,os模块

  • Vue2如何支持composition API示例详解

    目录 前言 如何使用 原理解析 响应式( ref reactive 的实现) 总结 前言 自从 Vue3 发布之后,composition API 这个词走入写 Vue 同学的视野之中,相信大家也一直听到 composition API 比之前的 options API 有多好多强,如今由于 @vue/composition-api 插件的发布,Vue2 的同学也可以上车咯,接下来我们主要以响应式的 ref 和 reactive 来深入分析一下,这个插件是怎么实现此功能的. 如何使用 // 入口

  • javascrip高级前端开发常用的几个API示例详解

    目录 MutationObserver API 特点 IntersectionObserver API 举个例子 图片懒加载 无限滚动 getComputedStyle() API 与style的异同 getBoundingClientRect API 应用场景 1.获取 dom 元素相对于网页左上角定位的距离 2.判断元素是否在可视区域内 MutationObserver MutationObserver 是一个可以监听 DOM 结构变化的接口. 当 DOM 对象树发生任何变动时,Mutati

  • Java实现广度优先遍历的示例详解

    目录 什么是广度优先 一个简单的例子 程序实现 总结 什么是广度优先 广度就是扩展开,广度优先的意思就是尽量扩展开.所以在算法实现的时候,就是一个循环遍历枚举每一个邻接点.其基本思路就是按层扩展,扩得越广越好. 伪代码如下: for(int i = 0; i < children.size(); i++){ children.get(i); // 调用每一个子节点 } 一个简单的例子 我们以一个简单的迷宫为例,以1代表墙,0代表路径,我们构造一个具有出入口的迷宫. 1 1 0 1 1 1 1 1

  • JS递归遍历查询是否有权限示例详解

    目录 前言 需求分析 设计思路 代码 声明查找模板如下 js 版本 ts 版本 后记 前言 最近参与了一个基于 qiankun 构建的微前端大型项目,涉及到十几个子应用,基于基座独立开发了一个完善的权限中心模块.而权限中心中涉及到了 模块 > 一级菜单 > N级菜单/按钮 结构的权限管理. 这次的需求是在其中一个子应用的按钮级别的权限管理,在鉴权阶段写了一个小的方法,用来从权限树中查询是否有某一个按钮的权限,从而控制用户对于按钮的使用权限. 需求分析 权限的每一层对应的子菜单的键不尽相同. 在

  • Composition API思想封装NProgress示例详解

    目录 正文 安装和基本使用 自己实现一个 正文 最近在用vue3封装一套后台管理模版,自然会用到NProgress.如果你没有用过,你可以看一下instagram,youtube这些网站,它们都有一个顶部加载条,这也是现在最流行的网页加载条. 于是我发现了@vueuse/integrations中的useNProgress,我们先看一下Anthony Fu大神如何去封装的,然后咱们再去试着自己实现一下. 安装和基本使用 npm i nprogress @vueuse/integrations 基

  • vue整合项目中百度API示例详解

    目录 官网介绍 申请密钥 官方示例 项目实战 创建地图 获取经纬度 创建Map实例 两个坐标点之间的距离 查询地点信息 Vue项目中整合百度API获取地理位置的方法 组件中使用 vue-baidu-map 百度地图官方vue组件 官网介绍 百度地图 JavaScript API 是一套由 JavaScript 语言编写的应用程序接口 可帮助您在网站中,构建功能丰富交互性强的地图应用 支持PC端和移动端,基于浏览器的地图应用开发,且支持HTML5特性的地图开发 官网传送门 百度地图JavaScri

随机推荐