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
, чтение и запись в один и тот же файл (имеется в виду один и тот же инод) асинхронно и замена содержимого без загрузки всего в память.Реализации, которые я обнаружил, на самом деле загружают весь файл в память, а затем сохраняют его.Я пропускаю известный модуль или есть необходимость написать что-то вроде этого?