Перечислите файлы в пути, которые имеют подстановочные знаки, используя DirectoryScanner - PullRequest
0 голосов
/ 16 ноября 2010

Я использую сканер каталогов apache для сканирования файлов по пути с подстановочными знаками.

DirectoryScanner scanner = new DirectoryScanner();
scanner.setIncludes(new String[]{"*/*.java"});
scanner.setBasedir("C:/Temp");
scanner.setCaseSensitive(false);
scanner.scan();
String[] files = scanner.getIncludedFiles();

Проблема здесь в том, что если я использую приведенный выше код, он будет отображать только файлы Java внутри подкаталогов Temp, а не файлы Java, которые находятся непосредственно в папке Temp.

Также у меня есть уведомление, если я использую (new String[]{"*.java"}), тогда он перечислит все java-файлы в папке Temp, а (new String[]{"**/*.java"}) перечислит все java-файлы даже внутри подкаталогов подкаталога. Итак, мой вопрос здесь,

1) Это стандартный подстановочный синтаксис, который применяется везде? я имею в виду ** / означает все каталоги и * / означает только подкаталоги?

2) Как получить файлы, которые находятся непосредственно в каталоге Temp и только внутри подкаталогов (больше не внутри этих подкаталогов, как мы используем **)

3) Теперь мы можем видеть, что при использовании DirectoryScanner у нас есть базовый каталог, а затем синтаксис подстановочного знака relvanat. Но предположим, что у нас тоже есть символы подстановки в середине базовой директории . Если да, то как мы можем использовать DirectoryScanner?

Спасибо.

1 Ответ

0 голосов
/ 16 ноября 2010

Попробуйте использовать:

scanner.setIncludes(new String[]{"*/*.java", "*.java"});

Добавьте все необходимые шаблоны в этот массив.Есть ли особая причина, по которой вы используете DirectoryScanner?Использование самописной рекурсивной функции для этого кажется более простым.

См. http://leepoint.net/notes-java/io/10file/20recursivelist.html

...