FS-Modul: Streams
Was sind Streams?
Streams sind Objekte, mit denen Daten kontinuierlich gelesen und geschrieben werden können:
In Node.js sind Stream-Objekte auch gleichzeitig Event-Emitter, die u. a. folgenden Ereignissen Event-Listenern zuweisen können:
- data: Daten sind bereit zum Lesen
- end: Keine Daten mehr zum Lesen vorhanden
- error: Es ist ein Fehler aufgetreten
- finish: Alle Daten wurden erfolgreich gestreamt
Das FS-Modul für Streams verwenden
Mit einem Stream lesen
Mit „fs.createReadStream(‚datei.txt‘)“ kann ein neuer Lese-Stream erstellt werden. Mit „readerStream.on(‚data‘, function(teil) { … })“ können die Daten aus einer Datei gestreamt werden. Mit „readerStream.on(‚end‘, function() { … })“ kann eine Funktion ausgeführt werden, nachdem alle Daten gestreamt wurden:
Textdatei:
JavaScript-Datei:
Kommandozeile:
Webbrowser:
Mit einem Stream schreiben
Mit „fs.createWriteStream(‚output.txt‘)“ kann ein neuer Schreib-Stream erstellt werden. Mit „writerStream.write(data, encoding)“ können Daten in die zuvor angegebene Datei gestreamt werden. Mit „writerStream.end()“ kann die Ende-Marke in der Datei gesetzt werden. Mit „writerStream.on(‚finish‘, function() { … })“ kann eine Funktion ausgeführt werden, nachdem der Schreibvorgang erfolgreich beendet wurde:
JavaScript-Datei:
Kommandozeile:
Webbrowser:
Textdatei:
Durchreichen von Streams
Mit „readerStream.pipe(writerStream)“ kann ein Lese-Stream direkt an einen Schreib-Stream weitergereicht werden:
Textdatei (Produzent):
JavaScript-Datei:
Kommandozeile:
Webbrowser:
Textdatei (Konsument):
Mit Hilfe von Streams Komprimieren und Dekomprimieren
Mit „fs.createReadStream(‚producer.txt‘).pipe(zlib.createGzip()).pipe(fs.createWriteStream(
‚consumer.txt.gz'))“ kann eine Datei mit Hilfe eines Streams komprimiert werden:
JavaScript-Datei:
Kommandozeile:
Webbrowser:
Datei-Explorer:
Mit „fs.createReadStream(‚consumer.txt.gz‘).pipe(zlib.createGunzip()).pipe(fs.createWrite
Stream(‚consumer.txt‘))“ kann eine Datei mit Hilfe eines Streams dekomprimiert werden:
JavaScript-Datei:
Kommandozeile:
Webbrowser:
Datei-Explorer: