相关文章推荐
微笑的汉堡包  ·  Springboot Thymeleaf ...·  1 年前    · 
卖萌的排球  ·  Excel VBA ...·  1 年前    · 

学习使用Java 8 APIs FIles.list() DirectoryStream 遍历目录下的所有文件,包括隐藏的,递归的文件

1. List all files and sub-directories using Files.list()

Files.list() 方法 遍历当前目录下所有的文件和子目录

Files.list(Paths.get("."))
        .forEach(System.out::println);
 Output:
.\filename1.txt
.\directory1
.\filename2.txt
.\Employee.java

2. List only files inside directory using filter expression

使用过滤器来过滤掉子目录,保留文件并打印

Files.list(Paths.get("."))
        .filter(Files::isRegularFile)
        .forEach(System.out::println);
Output:
.\filename1.txt
.\filename2.txt
.\Employee.java

3. List files and sub-directories with Files.newDirectoryStream()

Java提供了一个更加灵活遍历目录内容的方式:Files.newDirectoryStream()

注意,如果对一个大的目录进行操作,使用DirectoryStream将提高代码的运行速度

Files.newDirectoryStream(Paths.get("."))
        .forEach(System.out::println);
Output:
.\filename1.txt
.\directory1
.\filename2.txt
.\Employee.java

4. List only files with Files.newDirectoryStream()

只遍历文件,排除掉目录,通过path filter的第二个参数来控制

Files.newDirectoryStream(Paths.get("."), path -> path.toFile().isFile())
        .forEach(System.out::println);
Output:
.\filename1.txt
.\filename2.txt
.\Employee.java

5. List files of certain extention with Files.newDirectoryStream()

通过文件后缀名来过滤文件

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

6. Find all hidden files in directory

遍历隐藏文件 *** file -> file.isHidden()*** 应用到上面的例子里
或者使用下面更加简短的方法:

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

翻译自 https://howtodoinjava.com/java8/java-8-list-all-files-example/

学习使用Java 8 APIs FIles.list() 和 DirectoryStream 遍历目录下的所有文件,包括隐藏的,递归的文件1. List all files and sub-directories using Files.list()***Files.list() *** 方法 遍历当前目录下所有的文件和子目录Files.list(Paths.get(".")) ...
1. 使用Files.list()迭代目录及其子目录文件 Files.list()可以迭代目录及其子目录文件 Files.list(Paths.get(".")) //当前目录 .forEach(System.out::println); .\filename1.txt .\directory1 .\filename2.txt .\Employee.java
java遍历一个文件夹里边的所有文件,可以有两种方式:     一、递归遍历,通常也是开发者第一时间能想到的方法,递归遍历的优点是:实现起来相对简单,代码量相对较少,执行效率较高,缺点是:比较吃内存,对硬件要求较高;具体算法如下: // 递归遍历 private void getDirectory(File file) { File flist[] = file.listF
public class RecursiveFileTraversal { public static void main(String[] args) { String directoryPath = "your_directory_path"; File directory = new File(directoryPath); traverseDirectory(directory); public static void traverseDirectory(File file) { // 检查文件是否是目录 if (file.isDirectory()) { System.out.println("目录:" + file.getAbsolutePath()); // 获取目录中的文件和子目录 File[] files = file.listFiles(); // 递归遍历目录文件 if (files != null) { for (File child : files) { traverseDirectory(child); } else { // 处理文件 System.out.println("文件:" + file.getAbsolutePath()); 您只需将 "your_directory_path" 替换为您要遍历目录路径,然后运行该代码即可递归遍历目录中的所有子目录文件