Javascript Node.js-无法删除使用createWriteStream创建并写入的文件
我找不到解决这个问题的办法。使用节点fs,我使用createWriteStream创建一个文件,将数据写入其中,然后尝试删除它,但在节点打开时无法删除它 以下是我在此过程中使用的代码:Javascript Node.js-无法删除使用createWriteStream创建并写入的文件,javascript,node.js,filesystems,Javascript,Node.js,Filesystems,我找不到解决这个问题的办法。使用节点fs,我使用createWriteStream创建一个文件,将数据写入其中,然后尝试删除它,但在节点打开时无法删除它 以下是我在此过程中使用的代码: var file = fs.createWriteStream("test.txt", {flags: "a"); file.write(new Buffer(1048576)); 文件创建成功,1MB的空数据正确写入。问题是,当我尝试fs.取消链接文件或手动删除它(Windows-delete file)时,
var file = fs.createWriteStream("test.txt", {flags: "a");
file.write(new Buffer(1048576));
文件创建成功,1MB的空数据正确写入。问题是,当我尝试fs.取消链接
文件或手动删除它(Windows-delete file)时,它会从文件夹中消失,但当我刷新文件夹时,文件仍然存在,直到节点关闭为止。我认为一旦节点不再使用它,它就会被标记为删除
我已尝试在进程结束后使用file.close()
、file.end()
、file.emit(“close”)
、file.emit(“end”)
和其他一些工具关闭该文件,但仍然无法删除该文件
如何“完成”文件,以便在需要时将其删除?我认为它在写入后会自动关闭。要知道底层文件描述符何时关闭,需要在调用
.end()
后侦听close
事件。例如:
var file = fs.createWriteStream("test.txt", {flags: "a");
file.on('close', function() {
console.log('fd closed');
});
file.end(new Buffer(1048576));
唉,在试验了不同的代码组合之后,我设法找到了一种方法,如果文件没有像从HTTP(s)get请求将流数据导入文件时那样自行关闭,则可以正确地关闭该文件 关闭文件的正确方法如下
fs.close(fd);
fd
是文件描述符,我花了一段时间才理解它的位置。我尝试使用代码示例中的文件
,但它返回了错误
fd必须是文件描述符
最后我无意中发现了文件的文件描述符,它只是一个数字。您可以在您拥有的文件引用中找到它。就我而言,我所要做的就是
fs.close(file.fd);
完成后,现在可以删除该文件
如果有人愿意,可以对第二个参数使用回调:已经尝试过了,但没有效果。幸运的是,我找到了问题的解决方案,并且已经发布了答案。谢谢你的帮助。