文件删除仅适用于第一次

时间:2016-03-09 09:05:52

标签: java file jasper-reports

要使用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应用程序,这个函数可以调用很多次.... 后一个删除时间,只是显示文件被另一个进程使用...

不知道为什么......

1 个答案:

答案 0 :(得分:1)

尝试关闭 OutputStream

这样的事情(使用 AutoCloseable 界面和"尝试使用资源"声明)

    final File tempFile = File.createTempFile("aaa", ".tmp");
    try (OutputStream outputStream = new FileOutputStream(tempFile)) {
        IOUtils.copy(resource.getInputStream(), outputStream);
        // do something
    }