ノード ファイル ストリームとカスタム変換関数を使用していくつかのファイルを変更しようとしています。これは変換関数です:
const TransformStream = function() {
Transform.call(this, {objectMode: true});
};
util.inherits(TransformStream, Transform);
TransformStream.prototype._transform = function(chunk, encoding, callback) {
let line = chunk.toString()
if (!this.findLinesMode && lineStartRe.test(line)) {
this.findLinesMode = true
this.lines = []
}
if (this.findLinesMode) {
this.lines.push(line)
}
if (this.findLinesMode && lineEndRe.test(line)) {
this.findLinesMode = false
line = this.lines.join('').replace(re, (str, match) => match.trim())
}
if (!this.findLinesMode) {
this.push(line + '\n')
}
callback()
};
そして、次のコードでそれを使用しようとしました:
byline(fs.createReadStream(filePath, {encoding: 'utf8'}))
.pipe(new TransformStream())
.pipe(fs.createWriteStream(filePath))
ただし、ファイルは空になります。
トランスフォーマーのコードが期待どおりに動作することを確信しています。なぜなら、パイプを試してみたところprocess.stdout
、出力がまさに希望どおりだったからです。
私の質問は、私が間違っていることと、それを修正するために何を試みることができるかということです。