多个进程上的 fs.createWriteStream

2024-02-04

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

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


我应该使用 fs.createWriteStream 然后使用 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://www.npmjs.com/package/lockup
或者这个:https://github.com/Perennials/mutex-node https://github.com/Perennials/mutex-node
您还可以在这里找到更多信息:https://www.npmjs.com/browse/keyword/lock https://www.npmjs.com/browse/keyword/lock
或在这里:https://www.npmjs.com/browse/keyword/mutex https://www.npmjs.com/browse/keyword/mutex

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多个进程上的 fs.createWriteStream 的相关文章

随机推荐