如何仅使用JavaAPI基于通配符筛选资源文件

如何仅使用JavaAPI基于通配符筛选资源文件,java,file,filter,resources,wildcard,Java,File,Filter,Resources,Wildcard,我在spring项目的META-INF文件夹中有几个资源文件。我想使用通配符根据文件名筛选这些文件 例如: 位于META-INF文件夹中的文件如下 a-config.xml b-config.xml c-config.xml 我想要的是使用通配符过滤这些文件*-config.xml 我已经知道我可以很容易地使用springResourcePatternResolver实现这一点 我尝试使用java.io.FileFilter,但即使这样,我也必须传递一个正则表达式来过滤文件名 例如: 在不使用

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

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

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

我已经知道我可以很容易地使用spring
ResourcePatternResolver
实现这一点

我尝试使用
java.io.FileFilter
,但即使这样,我也必须传递一个正则表达式来过滤文件名

例如:


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

您需要的是一种不太具表现力的模式匹配,称为。一种解决方案是使用字符串类方法(例如
startsWith
endsWith
,…)实现您自己的
globbing
。但是我认为使用
regex
是最好的通用解决方案。

您能指定您正在使用的java版本吗?如果过滤不是太复杂,您可以使用String.startsWith或String.endsWith。但是正则表达式有什么问题?@Seelenvirtuose是的,我们可以使用String.startsWith或String.endsWith,但我们正在寻找更好、更通用的解决方案。使用正则表达式是可以的,但我需要知道在最终确定使用正则表达式之前,没有其他方法可以做到这一点。谢谢,我不知道还有其他的解决办法。正则表达式是通用的解决方案。
FileFilter customFilter = new FileFilter() {
      @Override
      public boolean accept(File pathname) {
        if(pathname.getName().matches("(.*)config(.*)")) {
           return true;
        }
     return false;
      }
    };