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