我有一个资源对象(org.springframework.core.io.ClassPathResource)。我需要获取 File 对象,但是resource.getFile() 抛出异常 File not Found。但调用后resource.getURI()我得到了结果
jar:file:/D: .... file.jar!/com//test/0be14958-3778-40bf-bd3e-ee605fcdd3f0/verify
Run Code Online (Sandbox Code Playgroud)
目录位于 jar 文件中。是否可以解决 ClassPathResource 的限制并创建 File 对象?
我尝试了一个新的 File(resource.getURI()) 但它失败并显示 java.lang.IllegalArgumentException: URI is not hierarchical
我有什么错?
我认为不可能从 JAR 中的内容中获取 java.io.File (因为它实际上不是文件)。来自 ClassPathResource JavaDoc:
支持解析,就像
java.io.File类路径资源驻留在文件系统中一样,但不支持 JAR 中的资源。
您没有提到为什么需要它作为 java.io.File,但也许您可以重构代码以使用 ClassPathResource.getInputStream 方法(该方法使您能够读取资源)?
或者您也可以使用 ClassPathResource.getInputStream 将所需的文件复制到文件系统上的临时文件,然后您可以将其用作直接的 java.io.File。
File temp = File.createTempFile("temp", ".tmp");
org.apache.commons.io.IOUtils.copy(resource.getInputStream(), new FileOutputStream(temp));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5160 次 |
| 最近记录: |