【问题标题】:Java wildcard expansionJava通配符扩展
【发布时间】:2011-03-07 06:56:06
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: java apache-commons-io


    【解决方案1】:

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

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

    Iterator iterateFiles = FileUtils.iterateFiles(
      new File("."), new WildcardFileFilter("*.xml"), TrueFileFilter.INSTANCE);
    while(iterateFiles.hasNext()){
        System.out.println(iterateFiles.next());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      • 1970-01-01
      • 2012-07-12
      相关资源
      最近更新 更多