TL; DR
我正在浏览npm
和github
上的许多解决方案,寻找可以让我read
和write
到两个不同文件中的同一个文件的解决方案同时放置。到目前为止,我很难找到这样的东西。是否存在某种允许使用该模块的模块?
背景
本质上,我的要求是,在大文件中,我需要按以下顺序进行操作:
理想情况下,用法如下:
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),并替换内容而不将所有内容加载到内存中。
我希望这是一个真实的用例,但是我发现的所有实现实际上都是将整个文件加载到内存中,然后保存。我在这里错过了一个已知的模块,还是需要实际编写这样的东西?
答案 0 :(得分:1)
嗯...看来很难。 :)
因此,这里有记录-我没有找到这样的模块,并实际上与负责一个很好的文件内替换模块的一些人讨论了此模块。看不到解决方法,我决定从头开始编写,这里是:
该模块的工作原理很简单:在可读流中将其消耗掉之前,无法写入任何字节,而且其底层也非常简单(耦合fs.read/write
操作,着眼于读写点)。
如果您觉得这很有用,那么我很高兴。 :)