gpt4 book ai didi

node.js - 多个进程上的 fs.createWriteStream

转载 作者:太空宇宙 更新时间:2023-11-03 23:32:25 28 4
gpt4 key购买 nike

如何实现一个系统,其中多个 Node.js 进程使用 fs.createWriteStream 写入同一文件,这样它们就不会覆盖数据?看起来 fs.createWriteStream 的默认设置是在调用该方法时清除文件。我的目标是清除一次文件,然后让所有其他后续写入者仅追加数据。

我应该先使用fs.createWriteStream,然后使用fs.appendFile吗?或者有没有办法为每个进程打开一个流,而不仅仅是第一个打开文件的进程?

最佳答案

Should I use fs.createWriteStream and then fs.appendFile?

您可以使用其中任何一个。

使用 fs.createWriteStream 您必须像这样更改标志:

fs.createWriteStream('your_file',{
flags: 'a+', // default is 'w' (just 'a' might be enough here, i'm not sure)
})

如果该文件不存在,则应创建该文件;如果存在,则应使用写访问权限打开该文件,并将指针设置为 end。 (追加模式)

如何使用fs.appendFile应该很清楚,而且它的作用几乎相同。

现在是多个进程访问同一文件的问题。显然,只有一个进程可以同时以写访问权限打开同一文件。因此,如果另一个进程具有写访问权限,则需要等待文件被释放。您可能需要一个库来实现这一点。

例如:https://www.npmjs.com/package/lockup
或者这个:https://github.com/Perennials/mutex-node
您还可以在这里找到更多信息:https://www.npmjs.com/browse/keyword/lock
或这里:https://www.npmjs.com/browse/keyword/mutex

我还没有尝试过这些库中的任何一个,但我发布的库和列表中的其他几个库应该完全满足您的需要。

关于node.js - 多个进程上的 fs.createWriteStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36658995/

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