0

我有以下代码:

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"or "Folder1_*.xml"。第一个 ( "Folder1/*.xml") 不起作用,因为Files.newDirectoryStream它不是递归的,并且仅尝试匹配文件夹中第一级的文件/文件dir夹。

有没有办法以这种方式使用该Files.newDirectoryStream(Path dir, String glob)方法(递归过滤文件),还是我必须让自己成为一个检索所有文件/文件夹并手动过滤它们的递归方法?(我宁愿不使用外部库)

谢谢。

4

0 回答 0