我正在使用响应<<发送文件file.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()
感谢。
答案 0 :(得分:3)
您没有关闭输入流。改变
response.outputStream << tempfile.newInputStream()
要
tempfile.withInputStream { response.outputStream << it }
后者将确保流关闭。另外,如果抛出异常,您可能希望删除finally块中的文件。