// const fs = require('node:fs'); // const zlib = require('node:zlib'); import fs from 'node:fs'; import zlib from 'node:zlib'; const gzipCompressor = zlib.createGzip(); const inputStream = fs.createReadStream('data/products.html'); const outputStream = fs.createWriteStream('data/products.html.gz'); inputStream.on('data', (chunk) => { console.log('Pakete (data chunks) werden geladen: ', chunk.length); // outputStream.write(zlib.gzipSync(data)); }); outputStream.on('finish', () => { console.log('Process finished'); }); inputStream.pipe(gzipCompressor).pipe(outputStream); // Übung 29: Datenströme // Schreibe Codebeispiel 239 um, ohne die Funktion pipe(…) zu verwenden! // TIPP: Um eine Datei päckchenweise lesen- und schreiben zu können, gibt es für das fs Modul die Methoden createReadStream und createWriteStream. // ÜBUNG BEREITS GELÖST!!! // Die wichtigsten WritableStream-Events im Überblick // - 'finish': Feuert, nachdem stream.end() aufgerufen wurde und alle gepufferten Daten erfolgreich auf das Ziellaufwerk geschrieben wurden. // - 'close': Feuert, wenn der zugrundeliegende File Descriptor / die Ressource vollständig geschlossen wurde. // - 'drain': Feuert, wenn der interne Puffer voll war (write() gab false zurück) und nun wieder bereit für neue Daten ist. // - 'error': Feuert, wenn beim Schreiben ein Fehler auftritt (z. B. fehlende Schreibrechte oder volle Festplatte).