我想列出一个目录及其子目录下,所有符合给定文件匹配模式的文件列表。
例如,"M:\SOURCE\*.doc",其中 SOURCE 目录的结构如下:
问题在于DirectoryStream只检查您提供的直接路径目录,而不是它的子目录。
然后有一个"扁平化"方法,使用Files.walk可以查看所有子目录,但问题是它不能像DirectoryStream一样提供按文件掩码过滤的可能性。
例如,"M:\SOURCE\*.doc",其中 SOURCE 目录的结构如下:
|-- SOURCE
| |-- Folder1
| | |-- File1.doc
| | |-- File1.txt
| |-- File2.doc
| |-- File3.xml
应该返回File1.doc和File2.doc。
一开始,我使用了DirectoryStream,因为它已经对掩码/ glob语法进行了一些检查,并且能够将其用于过滤器,因为这不仅仅是一些正则表达式,而是实际的文件掩码,更容易让普通用户理解。
Files.newDirectoryStream(path, mask);
问题在于DirectoryStream只检查您提供的直接路径目录,而不是它的子目录。
然后有一个"扁平化"方法,使用Files.walk可以查看所有子目录,但问题是它不能像DirectoryStream一样提供按文件掩码过滤的可能性。
Files.walk(path, Integer.MAX_VALUE);
所以我陷入了困境,无法将这两种方法的优点结合起来...