响应后删除tmp文件?

时间:2017-11-24 17:14:33

标签: java spring-mvc spring-restcontroller

我的用例:

  1. 在用户请求上创建tmp文件(我真的不需要创建真实文件,但我需要java.io.File实例)
  2. 处理此文件
  3. 以json
  4. 的形式返回文件和其他元数据
  5. 永久删除tmp个文件
  6. 我的代码如下:

    @GetMapping(produces = MediaType.MULTIPART_FORM_DATA_VALUE)
    public ResponseEntity<MultiValueMap<String, Object>> regeneratePdfTest() throws IOException {
        MultiValueMap<String, Object> parts = new LinkedMultiValueMap<>();
        File tempFile = File.createTempFile("temp-file-name", ".tmp");
    
        processFile(tempFile);
    
        parts.add("file", new HttpEntity<>(new FileSystemResource(tempFile)));
        parts.add("meta-data", new HttpEntity<>(someObject));
    
        return new ResponseEntity<>(parts, HttpStatus.OK);
    }
    

    (这个代码最适合这种情况吗?)

    我知道File.deleteOnExit(),但文档说

      

    只会尝试删除虚拟机的正常终止,如Java语言规范

    所定义

    在我的情况下,我希望在响应后立即删除文件(文件有一些私人信息,我不想保留它们,也是安全的内存,因为我不再需要这个文件)。

    文件大小可能非常大(超过200MB)。

    更新1: 如果发生错误,我也想删除文件。

0 个答案:

没有答案