3

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

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

PathMatchingResourcePatternResolver 只返回资源数组,我只能检索资源的 URL,但我也想知道这个资源的“根”目录是什么。返回的资源可以是各种“格式”,例如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)?

4

1 回答 1

1

You you use the PathMatchingResourcePatternResolver.getResources(String pattern) to get a list of resources matching the pattern, it should be trivial to parse the URL returned by Resource.getURL().

It should look something like jar:file://path/to/jar.jar!/path/to/your/resource/foo.bar

于 2012-08-01T04:16:36.977 回答