Java 提取相对于类路径的资源
我试图从我的类路径中提取某些类型的文件并将其放入临时目录,我希望根据其“相对类路径路径”提取资源 我能够使用Spring的PathMatchingResourcePatternResolver来检索匹配资源的列表。例如,我正在从类路径扫描Java 提取相对于类路径的资源,java,spring,embedded-resource,Java,Spring,Embedded Resource,我试图从我的类路径中提取某些类型的文件并将其放入临时目录,我希望根据其“相对类路径路径”提取资源 我能够使用Spring的PathMatchingResourcePatternResolver来检索匹配资源的列表。例如,我正在从类路径扫描类路径*:/xyz/***.bar,假设在类路径中我有一个/xyz/some/dir/foo.bar,我想将此资源提取到我的临时目录/some/dir/foo.bar。是否需要获取该资源到类路径的相对路径,以便我可以相应地构造输出位置 PathMatchingR
类路径*:/xyz/***.bar
,假设在类路径中我有一个/xyz/some/dir/foo.bar
,我想将此资源提取到我的临时目录/some/dir/foo.bar
。是否需要获取该资源到类路径的相对路径,以便我可以相应地构造输出位置
PathMatchingResourcePatternResolver只返回资源数组,对于该数组,我只能检索资源的URL,但我还想知道此资源的“根”目录是什么。返回的资源可以是各种“格式”,如jar:file:/some/path/somejar.jar/xyz/some/dir/foo.bar
,文件:/some/output/directory/xyz/some/dir/foo.bar
等
有人能给我一些关于如何实现资源的提取或类路径根相对路径查找的提示吗
谢谢
编辑: 我不确定用另一种方式提问是否更好: 有没有办法知道资源的“相对类路径”是什么?
仅使用我前面的示例,如果我扫描
classpath*:/xyz/***.bar
,并得到一个资源文件:/some/output/directory/xyz/some/dir/foo.bar
,是否有任何方法可以得到该资源的“相对路径”(/xyz/some/dir/foo.bar
) 您可以使用PathMatchingResourcePatternResolver.getResources(String模式)
来获取与模式匹配的资源列表,解析Resource.getURL()返回的URL应该很简单
它应该看起来像
jar:file://path/to/jar.jar!/path/to/your/resource/foo.bar
“我试图从我的类路径中提取某些类型的文件并将其放入临时目录,”为什么?它为用户提供了什么特性?现在我用它来解决我使用的lib的一个技术缺陷,它们在从类路径获取资源时没有很好地工作。我想将捆绑的资源放到本地目录,让lib从那里读取。但是我相信这不是我需要这种特性的唯一情况,我在过去遇到过其他情况,我想从类路径中提取资源以保持其原始的“目录”结构。如果你读过我的问题,你应该知道我的问题不是如何获取资源,而是如何获取“路径”这样我可以在解压时维护目录结构。解析JAR URL很容易,但是文件呢?给定一个文件:/a/b/c/d/e/Foo.bar
,我怎么知道它是目录“/a/b/c/d”下的/e/Foo.bar
,还是/a
下的/b/c/d/e/Foo.bar
?