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);
我可以使用standard来做到这一点,fs.create[Read/Write]Stream
但是无法控制两个流的流,如果我的写位置超出了读位置,那么我正在读我刚刚写的东西...
用例与相同perl -p -i -e
,异步读取和写入相同的文件(表示相同的inode),并替换内容而不将所有内容加载到内存中。
我希望这是一个真实的用例,但是我发现的所有实现实际上都将整个文件加载到内存中,然后保存。我是否在这里错过了一个已知的模块,还是需要实际编写类似的东西?
嗯...看起来很艰难。:)
因此,出于记录目的-我没有找到这样的模块,实际上与负责文件内替换模块的一些人进行了讨论。看不到解决方法,我决定从头开始编写,这里是:
该模块的工作原理很简单:在可读流中将其消耗掉之前,无法写入任何字节,并且其底层非常简单(将fs.read/write
操作并列在读写点上)。
如果您觉得这有用,那么我很高兴。:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句