有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Grails发送文件,然后删除

我正在使用响应发送文件<&书信电报;文件newInputStream(与此答案here类似,但我想在以后删除此文件。但是,当我对此文件调用delete时,它不会删除它。我很确定这是因为该文件仍在使用(流式处理)。如何检查此项,然后删除

    def tempfile = new File(filename)
    if (tempfile) {
       response.setContentType("application/octet-stream")
       response.setHeader("Content-disposition", "attachment;filename=${tempfile.getName()}")
       response.outputStream << tempfile.newInputStream()
    } else {
       renderErrorMsg("ERROR: Cannot open/find file - ${filename}.")
    }
    tempfile.delete()

谢谢


共 (1) 个答案

  1. # 1 楼答案

    您没有关闭输入流。改变

    response.outputStream << tempfile.newInputStream()
    

    tempfile.withInputStream { response.outputStream << it }
    

    后者将确保流关闭。此外,您可能希望删除finally块中的文件,以防引发异常