使用java8 API遍历过滤文件目录及子目录和隐藏文件示例详解
作者:字母哥博客 发布时间:2023-08-29 02:42:29
标签: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);
来源:https://www.cnblogs.com/zimug/p/13353127.html


猜你喜欢
- 本文为大家分享了实现断点续传下载的具体代码,供大家参考,具体内容如下1、基于Ok+Rxjava实现断点续传下载2、基于Ok+Rxjava+R
- 目录课设要求相关知识点1.服务端能够看到所有在线用户2.服务端能够强制用户下线3.客户端能够看到所有在线用户4.客户端要求能够向某个用户发送
- 今天,简单讲讲android里如何获取一个视频文件的第一帧作为缩略图显示在界面上。之前,我说个最近需要从服务器下载视频文件,但是下载后肯定需
- HandlerThread 简介:我们知道Thread线程是一次性消费品,当Thread线程执行完一个耗时的任务之后,线程就会被自动销毁了。
- 近日工程中,逐渐感觉到原来复制粘贴代码的笨重,突然想起以前有人和我说起过Git和SVN之类的版本管理工具。由于平时主要是写Java代码,所以
- 本篇文章介绍自定义View配合属性动画来实现如下的效果实现思路挺简单:画一个半透明的圆实现两种动画效果,点击时扩散和不点击时扩散回收使用线程
- 前言前面几篇我们学习的都是单表查询,就是对一张表中的数据进行查询。而实际项目中,基本都会有多张表联合查询的情况,今天我们就来了解下JPA的联
- 在使用jsoup爬取其他网站数据的时候,发现class是带空格的多选择,如果直接使用doc.getElementsByClass(“clas
- 0x001 算数运算符 int num1 = 1, num2 = 2; System.o
- Android数据库中存取图片通常使用两种方式,一种是保存图片所在路径,二是将图片以二进制的形式存储(sqlite3支持BLOB数据类型)。
- 很多时候我们需要在Android设备上下载远程服务器上的图片进行显示,今天整理出两种比较好的方法来实现远程图片的下载。 方法一、直
- Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(
- Dubbo的扩展点加载从JDK标准的SPI(Service Provider Interface)扩展点发现机制加强而来。Dubbo改进了J
- 在测试过程中,我们有时候需要一个唯一不重复的值(比如order_id)。我之前一直用的时间戳+计数器/随机函数拼接,但是有时候效果不太好,今
- 1、对属性进行封装,使用户不能直接输入数据,我们需要避免用户再使用"对象.属性"的方式对属性进行赋值。则需要将属性声明为
- 数组实现Java 自定义Queue队列及应用Java 自定义队列Queue:队列的抽象数据类型就是一个容器,其中的对象排成一个序列,我们只能
- 本文实例讲述了Android实现Activity、Service与Broadcaster三大组件之间互相调用的方法。分享给大家供大家参考,具
- 基本配置、测试1、导入依赖<dependency> <groupId>org.springframewo
- 标题栏中的返回按钮在实际使用中用的比较多,今天就来讲讲我在项目开发中的使用经历,话不多说,还是直接上源码,上源码是最给力的。一、 编写自定义
- 布局文件activity_main.xml<RelativeLayout xmlns:android="http://sch