【发布时间】:2016-09-16 00:09:15
【问题描述】:
我正在使用带有 Express 的 Node.js。 我正在尝试使用 express js 将文件发送给客户端后删除文件。
function deleteFile (file) {
fs.unlink(file, function (err) {
if (err) {
logger.error(err);
}
});
}
app.get("/deleteFileAfterDownload", function (req, res){
var fileName = "a.pdf"
var stream = fs.createReadStream(fileName);
var streamClosed = false;
req.on('end',function(){
if (!streamClosed){
stream.emit('close');
// I tried stream.destroy() but that is also not working
}
});
stream.on('close', function () {
streamClosed = true;
deleteFile(fileName);
});
req.on('data', function(){});
stream.pipe(res);
});
但是文件没有被删除。似乎该进程仍在使用文件,因为就在我结束该进程后,该文件被删除了。
谁能告诉我为什么? 如果我做错了,请告诉我一个好方法。
【问题讨论】:
-
unlink() 从文件系统中删除一个名称。如果该名称是文件的最后一个链接,并且没有进程打开该文件,则该文件将被删除,并且它正在使用的空间可供重用。来源:man7.org/linux/man-pages/man2/unlink.2.html