ExpressでNode.jsを使用しています。 ファイルをexpress jsでクライアントに送信した後にファイルを削除しようとしています。node.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()は、ファイルシステムから名前を削除します。その名前がファイルへの最後のリンクであり、プロセスがファイルを開いていない場合、そのファイルは削除され、使用していたスペースは再利用できるようになります。出典:http://man7.org/linux/man-pages/man2/unlink.2.html – n32303