我试图从我的类路径中提取某些类型的文件并放入一个临时目录,我希望根据其“类路径的相对路径”提取资源。
我能够使用 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.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
)?
最佳答案
您使用 PathMatchingResourcePatternResolver.getResources(String pattern)
获取与该模式匹配的资源列表,解析 Resource.getURL() 返回的 URL 应该很简单。
它应该看起来像 jar:file://path/to/jar.jar!/path/to/your/resource/foo.bar
关于java - 提取相对于类路径的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11183205/