我正在尝试从类路径中提取某些类型的文件并将其放到临时目录中,我希望根据其“类路径的相对路径”来提取资源。
我可以使用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.bar
,file:/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
)?
答案 0 :(得分:1)
您使用PathMatchingResourcePatternResolver.getResources(String pattern)
获取与模式匹配的资源列表,解析Resource.getURL()返回的URL应该是微不足道的。
它应该看起来像jar:file://path/to/jar.jar!/path/to/your/resource/foo.bar