【问题标题】:Pipe to stdout and writeable stream管道到标准输出和可写流
【发布时间】:2013-07-23 05:53:57
【问题描述】:

我正在通过双工字符串(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} 无济于事)。

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

【问题讨论】:

    标签: node.js node.js-stream


    【解决方案1】:

    我想你想要的是:

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

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

    【讨论】:

    • 谢谢,这就像一个魅力。有什么解释为什么需要像这样分开吗?
    • 管道返回它们的目的地,而不是它们的源。并且您只想通过管道传输一次。
    • 点赞!发誓这样同一个源实际上可以被多个听众消费,而无需创建一个新对象该死的!我不知道
    猜你喜欢
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多