【问题标题】:How to create a file from classpath如何从类路径创建文件
【发布时间】:2015-11-14 04:30:39
【问题描述】:

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

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));

【问题讨论】:

  • 您是否尝试在 .jar 中创建文件?
  • 您想读取 image.jpg 的文件内容还是写入/创建一个新文件?请显示发生异常的代码行。
  • 如果你的资源文件夹中没有子文件夹src,那么你只需要/image.jpg
  • 我正在尝试从中创建一个 MultipartFile

标签: java file classpath


【解决方案1】:

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

我会推荐我们的 Apache 朋友 FileUtils 库 (getting classpath as this answer):

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

【讨论】:

    【解决方案2】:

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

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

    您不能将 JAR 文件中的文件作为常规文件打开。 要阅读此文件,您必须使用getResourceAsStream(详见此this SO question)。

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 2011-04-14
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多