【问题标题】:How to filter resource files based on wild card using only JAVA APIs如何仅使用 JAVA API 基于通配符过滤资源文件
【发布时间】:2014-04-22 07:12:20
【问题描述】:

我的 spring 项目的 META-INF 文件夹中有几个资源文件。我想使用通配符根据文件名过滤这些文件

例如: META-INF文件夹中的文件如下

a-config.xml
b-config.xml
c-config.xml

我想要的是使用通配符*-config.xml 过滤这些文件

我已经知道我可以轻松地为此使用 spring ResourcePatternResolver

我尝试使用java.io.FileFilter,但即便如此,我也必须通过正则表达式来过滤文件名。

例如:

FileFilter customFilter = new FileFilter() {
      @Override
      public boolean accept(File pathname) {
        if(pathname.getName().matches("(.*)config(.*)")) {
           return true;
        }
     return false;
      }
    }; 

有没有其他方法可以在不使用任何第三方依赖项(Spring、Google Guava 等)和 RegEX 的情况下做到这一点?我想使用简单的通配符来进行过滤。非常感谢您的 cmets。

【问题讨论】:

  • 你能指定你使用的java版本吗?
  • 如果过滤不是太复杂,你可以使用 String.startsWith 或 String.endsWith。但是……正则表达式有什么问题?
  • @Seelenvirtuose 是的,我们可以使用 String.startsWith 或 String.endsWith 但我们正在寻找更好、更通用的解决方案。使用 RegEx 是可以的,但我需要知道在使用 RegEx 之前没有任何其他方法可以做到这一点。谢谢
  • 好的,我不知道任何其他解决方案。正则表达式通用解决方案。

标签: java file filter resources wildcard


【解决方案1】:

您想要的是一种表达较少的模式匹配,称为Glob。一种解决方案是使用 String 类方法(例如 startsWithendsWith ......)实现您自己的 globbing。但我认为使用regex 是最好的通用解决方案。

【讨论】:

    猜你喜欢
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 2017-09-09
    • 1970-01-01
    • 2022-12-03
    • 2014-07-27
    • 2011-05-02
    相关资源
    最近更新 更多