nodejs добавляет данные в конец потока чтения

Я хотел бы прочитать файл.txt, добавить данные в конец и, наконец, отправить их в zipstream. Сейчас я пишу новый файл, а затем использую новый файл для zipstream, но я бы хотел сделать это на лету, не создавая ненужный новый файл.

Мой вопрос заключается в том, как создать поток чтения, изменить его и отправить в другой поток чтения (возможно, с записывающим потоком в середине).

Это возможно?

Первоначальная идея была этой, но я потерялся где-то посередине:

var zipstream = require('zipstream');
var Stream = require('stream');

var zipOut = fs.createWriteStream('file.zip');
var zip = zipstream.createZip({ level : 1 });
zip.pipe(zipOut);

var rs = fs.createReadStream('file.txt');
var newRs = new Stream(); // << Here should be an in/out stream??
newRs.pipe = function(dest) {
  dest.write(rs.read());
  dest.write("New text at the end");
};
zip.addEntry(newRs, {name : 'file.txt'}, function() {
  zip.finalize();
});

0 ответов

Вы можете добавить преобразование (подкласс stream.Transform). Затем в методе _flush у вас есть возможность выводить любой контент, который вы хотите, когда поток ввода достигнет конца. Это может быть передано между читаемым потоком и записываемым потоком. Обратитесь к документации модуля потокового узла для получения подробной информации.

Другие вопросы по тегам