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

仍在努力将自己的头绕在溪流上,如果我错过了明显的事情,请原谅我:)

最佳答案

我认为您想要的是:

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

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

关于node.js - 管道到标准输出和可写流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17822437/

10-16 18:24