要使用REPORT_FILE_RESOLVER解析Jasper报告中的图像,我正在创建临时文件并从inputStream复制到它。
final File tempFile = File.createTempFile("aaa", ".tmp");
IOUtils.copy(resource.getInputStream(), new FileOutputStream(tempFile));
导出jasper报告后,我尝试删除如下的临时文件:
final boolean deleteIfExists = Files.deleteIfExists(Paths.get(tempfile.getPath()));
// file.delete();
但是,如果我使用Files.deleteIfExists(Paths.get(tempfile.getPath()))
file.delete()
没有成功。我正在实现Web应用程序,这个函数可以调用很多次....
后一个删除时间,只是显示文件被另一个进程使用...
不知道为什么......
答案 0 :(得分:1)
尝试关闭 OutputStream 。
这样的事情(使用 AutoCloseable 界面和"尝试使用资源"声明)
final File tempFile = File.createTempFile("aaa", ".tmp");
try (OutputStream outputStream = new FileOutputStream(tempFile)) {
IOUtils.copy(resource.getInputStream(), outputStream);
// do something
}