文件删除仅适用于第一次

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
    }