文件删除仅适用于第一次
File deletion works only for first time
为了使用 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 应用程序,这个函数可以被调用很多次....
后面的删除时间,正好显示文件被另一个进程使用了...
不知道为什么...
尝试关闭 OutputStream。
类似这样的事情(使用 AutoCloseable 接口和 "try-with-resources" 语句)
final File tempFile = File.createTempFile("aaa", ".tmp");
try (OutputStream outputStream = new FileOutputStream(tempFile)) {
IOUtils.copy(resource.getInputStream(), outputStream);
// do something
}
为了使用 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 应用程序,这个函数可以被调用很多次....
后面的删除时间,正好显示文件被另一个进程使用了...
不知道为什么...
尝试关闭 OutputStream。
类似这样的事情(使用 AutoCloseable 接口和 "try-with-resources" 语句)
final File tempFile = File.createTempFile("aaa", ".tmp");
try (OutputStream outputStream = new FileOutputStream(tempFile)) {
IOUtils.copy(resource.getInputStream(), outputStream);
// do something
}