繁体   English   中英

如何从类路径创建文件

[英]How to create a file from classpath

我正在尝试在以下位置创建一个新文件:

project/src/resources/image.jpg

如下:

URL url = getClass().getResource("src/image.jpg");
File file = new File(url.getPath());

但我得到错误:

java.io.FileNotFoundException: file:\D:\project\dist\run560971012\project.jar!\image.jpg (The filename, directory name, or volume label syntax is incorrect)

我做错了什么?

更新:

我正在尝试从中创建一个MultipartFile:

FileInputStream input = new FileInputStream(file);
MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "image/jpeg", IOUtils.toByteArray(input));

您没有将图像数据传递到文件中!! 您正在尝试在图像路径中写入一个空文件!

我会推荐我们的Apache朋友FileUtils库( 以classpath作为此答案 ):

import org.apache.commons.io.FileUtils

URL url = getClass().getResource("src/image.jpg");
final File f = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());
FileUtils.copyURLToFile(url, f);

此方法下载url ,并将其保存到文件f

您的问题是“ image.jpg”是您项目的资源。 因此,它嵌入在JAR文件中。 您可以在异常消息中看到它:

文件:\\ D:\\ project \\ dist \\ run560971012 \\ project.jar! \\ image.jpg

您无法将JAR文件中的文件作为常规文件打开。 要读取此文件,必须使用getResourceAsStream (如本SO问题中所述 )。

祝好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM