4

我需要在文件路径中扩展通配符以获取与文件路径匹配的文件列表。
我使用了来自 apache 的 commons-io:

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

问题是它只扩展*or?通配符而不扩展**通配符,所以: /usr/**/*.xml 不匹配all files with extension .xml, in any subfolder of /usr

如何让**通配符扩展正常工作?

谢谢

4

1 回答 1

4

File.listFiles的问题在于它没有递归列出。

您可以使用FileUtils.iterateFiles 或 listFiles。它对文件使用一种模式,对目录使用一种模式。这与一个通配表达式不完全相同:

Iterator iterateFiles = FileUtils.iterateFiles(
  new File("."), new WildcardFileFilter("*.xml"), TrueFileFilter.INSTANCE);
while(iterateFiles.hasNext()){
    System.out.println(iterateFiles.next());
}
于 2011-03-07T07:38:26.423 回答