JAVA8系列教程-迭代器及样例
                                    
                                    温馨提示:
                                
                                
                                    本文最后更新于 2020年04月21日,已超过 2,019 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
                                
                            了解如何与递归一起使用Java 8 API Files.list()并DirectoryStream列出其中的所有文件,包括隐藏文件。
1.使用Files.list()列出所有文件和子目录
Files.list()列出当前目录中所有文件名和子目录的方法。
| Files.list(Paths.get("."))        .forEach(System.out::println); Output:.\filename1.txt.\directory1.\filename2.txt.\Employee.java | 
2.使用过滤器表达式仅列出目录内的文件
您可以使用过滤器过滤出子目录并仅打印文件名(如果需要)。
| Files.list(Paths.get("."))        .filter(Files::isRegularFile)        .forEach(System.out::println); Output:.\filename1.txt.\filename2.txt.\Employee.java | 
要列出其他目录中的文件,我们可以替换"."为所需目录的完整路径。
3.使用Files.newDirectoryStream()列出文件和子目录
Java提供了一种更灵活的遍历目录内容的方式Files.newDirectoryStream()。
请注意,如果我们使用的是大型目录,那么使用它
DirectoryStream实际上会使代码更快。
| Files.newDirectoryStream(Paths.get("."))        .forEach(System.out::println); Output:.\filename1.txt.\directory1.\filename2.txt.\Employee.java | 
4.仅列出具有Files.newDirectoryStream()的文件
要仅列出文件并从流中排除所有目录,请使用路径过滤器作为第二个参数。
| Files.newDirectoryStream(Paths.get("."), path -> path.toFile().isFile())        .forEach(System.out::println);Output:.\filename1.txt.\filename2.txt.\Employee.java | 
5.使用Files.newDirectoryStream()列出一定范围的文件
您可以更改在第二个参数中传递的路径过滤器表达式,以仅获取具有特定扩展名的文件。
| Files.newDirectoryStream(Paths.get("."),        path -> path.toString().endsWith(".java"))        .forEach(System.out::println);Output:.\Employee.java | 
6.在目录中查找所有隐藏文件
要查找所有隐藏文件,可以file -> file.isHidden()在上述任何示例中使用过滤器表达式。
或者,您可以使用此快捷方式。
| final File[] files = new File(".").listFiles(file -> file.isHidden());//orfinal File[] files = new File(".").listFiles(File::isHidden); | 
在以上示例中,我们学习了使用Java 8 API列表或根据各种搜索条件递归地迭代目录中的文件。随意修改代码并使用它。
References:
正文到此结束
                    
                    
                - 本文标签: 其他
- 本文链接: https://www.v8en.com/article/249
- 版权声明: 本文由SIMON原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
 
                                         
                                         
 
                                     
                                     
                                     
                                    