のために、私は以下のコードを複数のファイルにデータ収集をストリーミングしようとしていますで、前のストリームを上書き:ノード - 読み取り可能なストリームパイプ()ループ
for (var key in data) {
// skip if collection length is 0
if (data[key].length > 0) {
// Use the key and jobId to open file for appending
let filePath = folderPath + '/' + key + '_' + jobId + '.txt';
// Using stream to append the data output to file, which should perform better when file gets big
let rs = new Readable();
let n = data[key].length;
let i = 0;
rs._read = function() {
rs.push(data[key][i++]);
if (i === n) {
rs.push(null);
}
};
rs.pipe(fs.createWriteStream(filePath, {flags: 'a', encoding: 'utf-8'}));
}
}
はしかし、私は、移入されたすべてのファイルを取得して終了同じデータで、data
オブジェクトの最後のキーの配列です。リーダーストリームは各ループでオーバーライドされ、pipe()
から書き込み可能ストリームはforループが終了するまで開始されません。そんなことがあるものか?
が – Kieper