上传位于 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 中,所以任何人都可以告诉我如何做到这一点吗?
- 从 jar 中以流的形式读取文件
InputStream in = getClass().getResourceAsStream("big_bird.txt");
- 创建临时文件
File tempFile = File.createTempFile("big_bird", "txt");
- 将输入流写入临时文件
try (FileOutputStream outputStream = new FileOutputStream(tempFile)) {
int read;
byte[] bytes = new byte[1024];
while ((read = in.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
}
- 现在你可以use/upload
tempFile
我正在尝试上传位于 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 中,所以任何人都可以告诉我如何做到这一点吗?
- 从 jar 中以流的形式读取文件
InputStream in = getClass().getResourceAsStream("big_bird.txt");
- 创建临时文件
File tempFile = File.createTempFile("big_bird", "txt");
- 将输入流写入临时文件
try (FileOutputStream outputStream = new FileOutputStream(tempFile)) {
int read;
byte[] bytes = new byte[1024];
while ((read = in.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
}
- 现在你可以use/upload
tempFile