我需要在文件路径中展开通配符,以获取与文件路径匹配的文件列表 我在apache中使用了commons-io:
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
不匹配。
如何让**
通配符扩展正常工作?
感谢
答案 0 :(得分:4)
File.listFiles的问题在于它没有递归列出。
您可以使用FileUtils.iterateFiles or listFiles。其中一个模式用于文件,一个模式用于目录。这与一个globbing表达式不完全相同:
Iterator iterateFiles = FileUtils.iterateFiles(
new File("."), new WildcardFileFilter("*.xml"), TrueFileFilter.INSTANCE);
while(iterateFiles.hasNext()){
System.out.println(iterateFiles.next());
}