Я хочу получить все подоказы определенной папки (не только прямые, но и все вложенные и т. Д. c. -> рекурсивные), содержащие определенное регулярное выражение. Это должно быть максимально эффективно.
Регулярное выражение вводится пользователем. Например, он вводит «hello», а затем должны быть перечислены все подзаказы папки (myFolder)
, которые содержат регулярное выражение «. * Hello. *». Более конкретно c, пути найденных папок должны быть возвращены.
Я уже провел некоторое исследование и нашел nio.file, но я не уверен, что nio.file в этом случае быстрее io.file. Я новичок во всей этой топи c, поэтому извините, если Я говорю что-то, что было неправильно. Я использую Java 11.
Например, я также нашел такую функцию, и она работает:
Stream s = Files.find(
Paths.get("myFolder"),
Integer.MAX_VALUE,
(path, basicFileAttributes) -> {
File f = path.toFile();
return f.getName().matches(".*'myRegexHere'.*") && f.isDirectory() && !f.isHidden();
});
Но я не уверен если есть более эффективные функции / подходы или более эффективный способ. Я открыт для предложений и идей.
РЕДАКТИРОВАТЬ :
Есть ли способ исключить определенные папки из поиска?