使用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

标签:java8,API,遍历,文件目录
0
投稿

猜你喜欢

  • Mybatis SqlSessionFactory与SqlSession详细讲解

    2021-12-24 22:42:56
  • springboot前后台数据交互的示例代码

    2023-11-26 21:15:07
  • java使用TimerTask定时器获取指定网络数据

    2022-08-14 10:52:20
  • 教你如何监控 Java 线程池运行状态的操作(必看)

    2023-02-09 04:34:13
  • Java7之forkjoin简介_动力节点Java学院整理

    2023-08-31 14:08:28
  • C++数组指针和二维数组详情

    2022-03-31 21:11:07
  • C# 类的声明详解

    2022-10-15 14:08:38
  • Android开发之绘制平面上的多边形功能分析

    2023-12-13 13:31:57
  • C# winform实现右下角弹出窗口结果的方法

    2023-02-05 14:22:57
  • springboot+mybatis-plus 两种方式打印sql语句的方法

    2022-12-29 13:41:11
  • C# Winform下载文件并显示进度条的实现代码

    2022-11-26 04:39:02
  • Android实现照片墙效果的实例代码

    2023-01-20 16:53:37
  • OpenCV + MFC实现简单人脸识别

    2023-02-24 06:15:55
  • SpringBoot如何进行对象复制的实践

    2023-11-23 03:40:19
  • Android AndBase框架使用封装好的函数完成Http请求(三)

    2021-09-15 09:49:56
  • 为Android应用增加渠道信息 自动化不同渠道的打包过程的使用详解

    2022-06-01 11:38:22
  • Java创建树形结构算法实例代码

    2021-11-21 22:24:01
  • Android简单实现弹幕效果

    2022-08-12 01:24:08
  • Java应用程序开发学习之static关键字应用

    2021-12-20 13:23:41
  • C++强制类型转换的四种方式

    2023-03-29 04:00:49
  • asp之家 软件编程 m.aspxhome.com