2013-07-23 12 views
16

Przesyłam plik przez ciąg dupleksowy (dzięki through) i mam problemy z drukowaniem informacji do stdouti zapisywanie do pliku. Jeden lub drugi działa dobrze.Potok do standardowego i zapisywalnego strumienia

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) 

Jestem zakładając to dlatego process.stdout jest zapisywalny strumień, ale nie jestem pewien jak to zrobić, co chcę (Próbowałem przechodzącą {end: false} bezskutecznie).

Wciąż stara się owinąć głowę wokół strumieni, tak mi wybaczyć, jeśli Tęskniłam za coś oczywistego:)

Odpowiedz

23

myślę to, co chcesz:

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

one musiały być rozdzielone, ponieważ rury zwracają miejsca docelowe, a nie ich źródło.

+0

Dzięki temu działa to jak urok. Jakieś wyjaśnienie, dlaczego należy je tak oddzielić? –

+1

rury zwracają miejsce przeznaczenia, a nie ich źródło. i chcesz jednorazowo potokować w strumieniu. –

Powiązane problemy