管道到stdout和可写流

时间:2013-07-23 22:59:12

标签: node.js node.js-stream

我正在通过双工字符串传送文件(由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}无效)。

仍在努力将我的头包裹在溪流周围,所以请原谅我,如果我错过了一些明显的东西:)

1 个答案:

答案 0 :(得分:27)

我认为你想要的是:

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

这些需要分开,因为管道返回目的地而不是它们的来源。