Files.newDirectoryStream с рекурсивным фильтром
У меня был следующий код:
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)
метод таким образом (рекурсивная фильтрация файлов) или я должен сделать сам рекурсивный метод, который извлекает ВСЕ файлы / папки и вручную их фильтрует?
(Я бы предпочел не использовать внешние библиотеки)
Благодарю.