Node.js同时读取和写入流到同一文件



TL;博士

我正在浏览npm上的许多解决方案,github正在寻找允许我同时在两个不同位置readwrite同一文件的东西。到目前为止,我实际上很难找到这样的东西。有没有某种模块可以允许这样做?

背景

从本质上讲,我的要求是在一个大文件中,我需要按以下顺序:

  • 变换

理想情况下,用法如下:

const fd = fs.open(file, "r+");
const read = createReadStreamSomehowFrom(fd);
const write = createWriteStreamSomehowFrom(fd);
read
.pipe(new Transform(transform() {...}))
.pipe(write);

我可以用标准fs.create[Read/Write]Stream做到这一点,但是没有办法控制两个流的流量,如果我的写入位置超出读取位置,那么我正在阅读我刚刚写的东西......

用例与perl -p -i -e相同,异步读取和写入同一文件(意味着相同的 inode(并替换内容而不将所有内容加载到内存中。

我希望这是一个真实的用例,但我发现的所有实现实际上都将整个文件加载到内存中,然后保存。我在这里错过了一个已知的模块,还是需要实际编写这样的东西?

嗯...... 似乎很难。 :)

所以这是记录 - 我没有找到这样的模块,实际上与一些负责一个不错的文件内替换模块的人讨论了这个问题。看到没有办法解决这个问题,我决定从头开始编写它,这里是:

  • GitHub 上的 signicode/rw-stream repo
  • RW 流在 npm

该模块的工作原理很简单,即在可读流中消耗之前不能写入任何字节,并且在下面相当简单(fs.read/write操作与关注读写点(。

如果你觉得这有用,那么我很高兴。 :)

相关内容

  • 没有找到相关文章

最新更新