java - 提取相对于类路径的资源

标签 java spring embedded-resource

我试图从我的类路径中提取某些类型的文件并放入一个临时目录,我希望根据其“类路径的相对路径”提取资源。

我能够使用 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/

相关文章:

ios - 获取导航栏的默认返回指示器图像

java - 从主应用程序访问插件 jar 中的资源文件

java - 在java中嵌入wav?

Java正则表达式查找带有释放字符的分隔符

java - 需要 java 位运算方面的帮助吗?

java - Heroku 上的 Spring 和 CloudAMQP 给出 "Unknown Host Exception"

java - 如何通过 Jackson Parser 从 Java 实例返回 String 对象

java - 如何在状态栏中获得永久应用程序通知程序?

java.lang.ClassCastException : [Ljava. lang.Long;无法转换为 java.lang.Long

java.lang.AssertionError 和两个实体是否相同?什么会导致这个?