首页 > 解决方案 > 成功下载java后删除临时文件

问题描述

首先,我在一个临时位置编写 excel 文件,然后我从该位置下载它。这是代码:

在这里,我将 excel 写入某个临时位置并返回该文件的位置:

public String parseExcel(Map<String, List<String>> data) {
   Workbook workbook = new XSSFWorkbook();
   Sheet sheet1 = workbook.createSheet("Sheet1");
   .
   .
   .
   var tmplocation = File.createTempFile("SampleTemplate", ".xlsx");
   FileOutputStream fileOut = new FileOutputStream(tmplocation);
   workbook.write(fileOut);
   fileOut.close();
   return tmplocation.getPath();
}

在这里,我正在从该位置下载该文件:

try {
    filePath = parseExcel(data);
    file = new File(filePath);
    return Cors.add(request, Response.ok(file).header("Content-Disposition",
           "attachment;filename=\"SampleTemplate.xlsx\"").header("Content-Length ", file.length())).allowAllOrigins().auth().build();
} catch() {
  .
  .
  .
}

要删除我添加的临时文件 finally 块,在 finally 块中我正在获取文件,但它没有用。它说 FileNotFound 异常

文件下载成功后如何删除这个临时文件?

标签: java

解决方案


deleteIfExists()方法java.nio.file.Files可以帮助你。

如果文件存在,则删除该文件。

与 delete(Path) 方法一样,实现可能需要检查文件以确定文件是否为目录。因此,相对于其他文件系统操作,此方法可能不是原子的。如果文件是符号链接,则删除符号链接本身,而不是链接的最终目标。

如果文件是目录,则目录必须为空。在一些实施方式中,目录具有用于在创建目录时创建的特殊文件或链接的条目。在这样的实现中,当仅存在特殊条目时,目录被认为是空的。

在某些操作系统上,当此 Java 虚拟机或其他程序打开并使用该文件时,可能无法删除该文件。

您可能还希望使用createTempFile()来创建您的文件。

以供参考:


推荐阅读