Java通配符扩展
我需要扩展文件路径中的通配符以获取与文件路径匹配的文件列表。
我使用了 apache 中的 commons-io:
protected File[] wildcardResolution(File f) {
File dir = f.getParentFile();
FileFilter fileFilter = new WildcardFileFilter(f.getName());
return dir.listFiles(fileFilter);
}
问题是它只扩展 *
或 ?
通配符,但不扩展 **
通配符,所以: /usr/**/*.xml 与 /usr 的任何子文件夹中的所有扩展名为 .xml 的文件不匹配
。
我怎样才能让**
通配符扩展正常工作?
谢谢
I need to expand wildcards in a filepath to get a list of files that match the filepath.
I used commons-io from apache:
protected File[] wildcardResolution(File f) {
File dir = f.getParentFile();
FileFilter fileFilter = new WildcardFileFilter(f.getName());
return dir.listFiles(fileFilter);
}
The problem is that it expands only *
or ?
wildcards but not **
wildcards, so:
/usr/**/*.xml doesn't match all files with extension .xml, in any subfolder of /usr
.
How can i get **
wildcard expansion to work properly?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
的问题File.listFiles 的特点是它不递归列出。
您可以使用 FileUtils.iterateFiles 或 listFiles。它对文件使用一种模式,对目录使用一种模式。这与一个通配符表达式并不完全相同:
The problem with File.listFiles is that it does not list recursively.
You can use FileUtils.iterateFiles or listFiles. Which uses one pattern for the files and one pattern for the directories. Which is not exactly the same as one globbing expression: