上传位于 jar 中的文件

Upload a file located inside a jar

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

this.getClass().getClassLoader().getResource("big_bird.txt") //doesn't work

new File("big_bird.txt".toURI()) //doesn't work

this.getClass().getClassLoader().getResourceAsStream("big_bird.txt") //kinda work as in I see the path but I can't get the file

我需要能够抓取文件并将其全部上传到 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. 现在你可以use/uploadtempFile