相对于类路径提取资源

时间:2012-06-25 03:36:13

标签: java spring embedded-resource

我正在尝试从类路径中提取某些类型的文件并将其放到临时目录中,我希望根据其“类路径的相对路径”来提取资源。

我可以使用Spring的PathMatchingResourcePatternResolver来检索匹配资源的列表。例如,我正在从类路径中扫描classpath*:/xyz/**/*.bar,假设在类路径中我有/xyz/some/dir/foo.bar,我想将此资源提取到MY_TEMP_DIR/some/dir/foo.bar。无论如何都要将此资源的相对路径获取到类路径,以便我可以相应地构造输出位置吗?

PathMatchingResourcePatternResolver只返回Resource数组,我只能检索资源的URL,但我想知道这些资源的“root”目录是什么。返回的资源可以采用各种“格式”,例如jar:file:/some/path/somejar.jar!/xyz/some/dir/foo.barfile:/some/output/directory/xyz/some/dir/foo.bar等。

有人可以给我提示如何实现资源的提取或类路径 - 根相对路径查找吗?

由于


修改

如果我以另一种方式提出问题,我不确定是否会更好:

有没有办法知道什么是资源的“类路径的相对路径”? 只需使用我之前的示例,如果我扫描classpath*:/xyz/**/*.bar,并获得资源file:/some/output/directory/xyz/some/dir/foo.bar,我有什么方法可以获得该资源的“相对路径”(/xyz/some/dir/foo.bar)?

1 个答案:

答案 0 :(得分:1)

您使用PathMatchingResourcePatternResolver.getResources(String pattern)获取与模式匹配的资源列表,解析Resource.getURL()返回的URL应该是微不足道的。

它应该看起来像jar:file://path/to/jar.jar!/path/to/your/resource/foo.bar

相关问题