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:

Quellen