学习使用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());
//or
final File[] files = new File(".").listFiles(File::isHidden);
翻译自 https://howtodoinjava.com/java8/java-8-list-all-files-example/