首页 > 解决方案 > 上传位于 jar 内的文件

问题描述

我正在尝试上传位于 jar 内的文件。当我正常上传文件时,它工作正常(这是预期的,因为文件在文件系统上)但是当我将一个带有文件的 jar 打包在它里面时它不起作用。我试过使用:

this.getClass().getClassLoader().getResource("big_bird.txt") //不起作用

new File("big_bird.txt".toURI()) //不起作用

this.getClass().getClassLoader().getResourceAsStream("big_bird.txt") //有点像我看到路径但我无法获取文件

我需要能够在 jar 中抓取文件并将其全部上传,所以任何人都可以让我了解如何做到这一点?

标签: javaexecutable-jar

解决方案


  1. 从 jar 中将文件作为流读取

InputStream in = getClass().getResourceAsStream("big_bird.txt");

  1. 创建临时文件

File tempFile = File.createTempFile("big_bird", "txt");

  1. 将输入流写入临时文件
try (FileOutputStream outputStream = new FileOutputStream(tempFile)) {
    int read;
    byte[] bytes = new byte[1024];
    while ((read = in.read(bytes)) != -1) {
        outputStream.write(bytes, 0, read);
    }
}
  1. 现在您可以使用/上传tempFile

推荐阅读