带有过滤器递归的Files.newDirectoryStream

时间:2014-06-24 11:56:25

标签: java file recursion nio directorystream

我有以下代码:

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)方法(递归过滤文件)或者我必须使自己成为一个递归方法来检索所有文件/文件夹并手动过滤它们? (我宁愿不使用外部库)

感谢。

0 个答案:

没有答案