Расширение подстановочных знаков Java - PullRequest
4 голосов
/ 07 марта 2011

Мне нужно расширить подстановочные знаки в пути к файлу, чтобы получить список файлов, которые соответствуют пути файла.
Я использовал commons-io из apache:

protected File[] wildcardResolution(File f) {
    File dir = f.getParentFile();
    FileFilter fileFilter = new WildcardFileFilter(f.getName());
    return dir.listFiles(fileFilter);
}

Проблема в том, что он расширяется только * или ? подстановочные знаки, но не ** подстановочные знаки, поэтому: /usr/**/*.xml не соответствует all files with extension .xml, in any subfolder of /usr.

Как я могу получить ** подстановочный знакрасширение для правильной работы?

Спасибо

1 Ответ

4 голосов
/ 07 марта 2011

Проблема с File.listFiles заключается в том, что в нем нет рекурсивного списка.

Вы можете использовать FileUtils.iterateFiles или listFiles .Который использует один шаблон для файлов и один шаблон для каталогов.Что не совсем то же самое, что и одно выражение:

Iterator iterateFiles = FileUtils.iterateFiles(
  new File("."), new WildcardFileFilter("*.xml"), TrueFileFilter.INSTANCE);
while(iterateFiles.hasNext()){
    System.out.println(iterateFiles.next());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...