如何实现多个 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(使用前将#替换为@)