我有以下代码:
Path dir = Paths.get("My root dir/Folder1");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.xml")) {
for (Path entry : stream) {
// Do something
}
} catch (IOException e) {
//
}
现在文件夹结构发生了变化,我可以同时拥有:
My root dir
-- Folder1
---- MyFile.xml
或
My root dir
-- Folder1_MyFile.xml
所以我希望能够使用以下代码:
Path dir = Paths.get("My root dir/Folder1");
String pattern = "Folder1/*.xml"; // or "Folder1_*.xml"
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, pattern)) {
for (Path entry : stream) {
// Do something
}
}
在这种情况下,我只需要更改pattern
变量,其值为"Folder1/*.xml"
或"Folder1_*.xml"
。
第一个("Folder1/*.xml"
)不起作用,因为Files.newDirectoryStream
不是递归的,只是尝试匹配dir
文件夹中第一级的文件/文件夹。
有没有办法以这种方式使用Files.newDirectoryStream(Path dir, String glob)
方法(递归过滤文件)或者我必须使自己成为一个递归方法来检索所有文件/文件夹并手动过滤它们?
(我宁愿不使用外部库)
感谢。