Java通配符扩展

标签 java apache-commons-io

我需要扩展文件路径中的通配符以获取与文件路径匹配的文件列表。
我使用了 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 的所有文件

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

谢谢

最佳答案

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());
}

关于Java通配符扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5216732/

相关文章:

java - 'dependencies.dependency.version' 缺少错误,但版本在父级中管理

java - Java中带有输入重定向运算符的执行命令

groovy - 我的Gradle项目取决于commons-io 2.4,但是Gradle将$ GRADLE_HOME/commons-io-1.4.jar放入类路径中,从而导致失败

java - 使用 apache commons io 更改文件的编码不起作用?

java - Core Java 中的继承

java - Struts 2 中重定向到另一个参数数量未知的操作

java - Nimbus 设置后返回 GUI

java - 使用 Jackson 避免使用空字段的对象

java - 模拟 apache.commons.io.IOUtils 类

java - JSON文件处理错误: A JSONArray text must start with '[' at 1 [character 2 line 1] when use file in UTF-8 encoding