【发布时间】:2019-03-04 19:54:16
【问题描述】:
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),替换内容而不把所有东西都加载到内存中。
我希望这是一个真实的用例,但我发现的所有实现实际上都是将整个文件加载到内存中然后保存。我在这里错过了一个已知的模块还是需要实际编写这样的东西?
【问题讨论】:
标签: node.js file stream fs file-descriptor