gpt4 book ai didi

node.js - NodeJS fs.unlink() 不释放文件句柄

转载 作者:IT王子 更新时间:2023-10-29 00:43:24 25 4
gpt4 key购买 nike

我正在使用以下调用来删除在 Linux (RHEL) 上运行的 nodeJS 应用程序中的现有文件。

fs.unlink(downloadsFolder + '/' + file)

但是,几天后我注意到文件仍在系统中,因为文件句柄没有被释放。我重新启动了 Node 服务器,这些文件最终消失了。如何以编程方式解决此问题?

dzdo lsof -L | grep -i deleted

node 48782 root 600743243 403197165 /mnt/downloads/file_1516312894734.csv (deleted)
node 48782 root 14999 403197166 /mnt/downloads/file_1516729327306.csv (deleted)

我还在 fs.unlink() 的日志中收到此警告,这会导致它吗?

(node:48782) [DEP0013] DeprecationWarning:不推荐调用不带回调的异步函数。

最佳答案

正如警告所说,fs.unlink方法是 asynchronous这意味着您必须提供一个回调函数,该函数将在删除操作完成时执行:

fs.unlink(downloadsFolder + '/' + file, (err) => {
if (err) throw err;
console.log('File successfully deleted');
});

或者你可以使用 fs.unlink 的同步版本:

fs.unlinkSync(downloadsFolder + '/' + file);

关于node.js - NodeJS fs.unlink() 不释放文件句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48529030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com