3.9K Star 22.5K Fork 7.8K

GVPdromara / hutool

 / 详情

希望Hutool中的ResourceUtil能支持通配符资源文件的读取

已完成
创建于  
2022-02-10 19:56

版本情况

JDK版本: java8
hutool版本: 5.7.19(请确保最新尝试是否还有问题)

问题描述(包括截图)

想使用hutool中的ResourceUtil来完成通配符资源文件的读取。但是发现并不能。
虽然spring/springboot环境可以有PathMatchingResourcePatternResolver能替代完成,但是在非spring的环境中,还是希望hutool能完成这种模式的读取。

  1. 复现代码
ResourceUtil.getResources("base/*.xml")
  1. 堆栈信息
    无堆栈,期望是能读取到List,但实际并未读取到

  2. 测试涉及到的文件(注意脱密)

评论 (14)

铂赛东 创建了任务

解析太复杂了,看下:AntPathMatcher,需要支持一大堆的通配符。

看下逻辑大概是:

  1. 找到根目录,列出根目录下所有资源。
  2. 通过AntPathMatcher挨个匹配资源……

是否有可能引入第三方jar包来解决,我理解为了一个小功能来额外引入一个jar包的确有些不优雅。但是的确引入成熟的解析包是比较稳妥的解决方法。

我试试吧。看来只能在SpringUtil中完成了。

我觉得可以用FileUtil.ls() 方法再组合正则表达式来实现会不会好点

其实现在就有获取所有资源的接口,然后filter一下就行。只是需要兼容Spring的antPath语法。

起初是我提出的issue,我现在再来说下我的想法:
本来的场景是我的开源框架需要在非spring体系里完成这一行为,但是由于缺少相应的工具支持,最终我决定去除了在非spring体系版本中对模糊路径的支持。

本来在spring体系中,有相应的spring类来解决。在大多数人的场景中,这个问题还是很容易被解决的。碰到像我这样的问题的case毕竟是少数,而这个问题的解决也不是那么容易的,需要整一套解析表达式的引擎来完成。解决这个issue的收益要远小于成本的付出。

所以磊兄可以不用去解决这个问题。不是说这个问题不值得解决,而是在大多数场景下,个人觉得没太大意义。

没关系,issue一直留着慢慢来。

大佬就是大佬,可以不用,但是不能没有

我没使用通配符也读不出来。不知道是不是bug。

@铂赛东 两年之后,终于可以回复你了。

6.0.0-M8增加ResourceFinder

final MultiResource resources = ResourceFinder.of()
			.find("**/*.txt");

Console.log("===== result =====");
for (final Resource resource : resources) {
	Console.log(resource);
}

:+1: :raised_hands: :smile_cat:

大赞!感谢磊兄

大佬支持classpath*这种方式吗

应该是支持的,毕竟抄的Spring。不过classpath*可以简化为*

Looly 任务状态待办的 修改为已完成
Looly 添加了
 
enhancement
标签

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(6)
1463 loolly admin 1578914022 1102362 bryan31 1578940308
Java
1
https://gitee.com/dromara/hutool.git
git@gitee.com:dromara/hutool.git
dromara
hutool
hutool

搜索帮助