Ja, es ist möglich, einfach und üblich. Das Folgende ist ein verrohrter Datenstrom von einer einzelnen Quelle zu mehreren Quellen. Es zeigt Ihnen die eine anonyme Callback-Funktion, die auf dem Ereignisschleife platziert wird, die die Schreibfunktion Ströme enthält, die die eigentliche Schreibarbeit tun:
var fs = require('fs');
var rs1 = fs.createReadStream ('input1.txt');
var ws1 = fs.createWriteStream('output1.txt');
var ws2 = fs.createWriteStream('output2.txt');
rs1.on('data', function (data) {
console.log(data.toString('utf8'));
ws1.write('1: ' + data);
ws2.write('2: ' + data);
});
Eine einfachere Möglichkeit ist es, die .pipe()
Funktionen zu nutzen.
var fs = require('fs');
var rs1 = fs.createReadStream ('input1.txt');
var ws1 = fs.createWriteStream('output1.txt');
var ws2 = fs.createWriteStream('output2.txt');
rs1.pipe(ws1);
rs1.pipe(ws2);
Die .pipe()
können Sie raffinierte Dinge wie Pipeline-Chaining in Zukunft für Pipeline-Manipulation, sehr ähnlich dem Unix-Konzept von so etwas wie du . | sort -rn | less
tun, wo Sie mehrere Rohre Handler verwenden können.
Lassen Sie den ersten Handler, der es verbraucht, selbst ein Stream sein und geben Sie ihn dann an den zweiten Handler weiter. –
@BenjaminGruenbaum oder entwerfen Sie ein "T-Stück", das mehrere Ausgabeströme verwaltet und nur Daten aus dem Eingabestrom an jeden Ausgang schreibt. – SheetJS
Warte, nvm. Du kannst Streams an so viele Orte leiten, wie du willst - es ist tot einfach. –