响应后删除 tmp 文件吗?

And*_*sha 6 java spring-mvc spring-restcontroller

我的用例:

  1. 根据用户请求创建tmp文件(我实际上不需要创建真实文件,但我需要有java.io.File实例)
  2. 处理这个文件
  3. 以 json 形式返回文件和其他元数据
  4. tmp永久删除文件

我的代码如下所示:

@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);
}
Run Code Online (Sandbox Code Playgroud)

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

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

根据 Java 语言规范的定义,仅在虚拟机正常终止时才会尝试删除

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

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

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