2013-07-23 20 views
16

私はデュプレックス文字列(through)のファイルをパイプしていますが、ファイルへの書き込みにはstdoutへの情報の印刷に問題があります。どちらか一方がうまく動作します。標準出力と書き込み可能なストリームへのパイプ

var fs = require('fs'); 
var path = require('path'); 
var through = require('through'); // easy duplexing, i'm young 


catify = new through(function(data){ 
    this.queue(data.toString().replace(/(woof)/gi, 'meow')); 
}); 

var reader = fs.createReadStream('dogDiary.txt'); // woof woof etc. 
var writer = fs.createWriteStream(path.normalize('generated/catDiary.txt')); // meow meow etc. 

// yay! 
reader.pipe(catify).pipe(writer) 

// blank file. T_T 
reader.pipe(catify).pipe(process.stdout).pipe(writer) 

私はprocess.stdoutが書き込み可能なストリームですが、私は私が(私は無駄に{end: false}を渡して試してみた)やりたいことするかどうかはわかりませんので、これはあると仮定しています。それでも、私の頭の周りストリーム包むのに苦労し

、私は何かを明らかに見逃している場合は、私を許して:)

答えて

23

私が何をしたいことはあると思う:

reader.pipe(catify) 
catify.pipe(writer) 
catify.pipe(process.stdout) 

これらがパイプので分離するために必要な彼らの出身ではなく目的地を返す。

+0

ありがとうございます、これは魅力的です。これらのように分離する必要がある理由についての説明はありますか? –

+1

パイプは、ソースではなく宛先を返します。一度ストリームにパイプするだけです。 –

関連する問題