38 lines
1.4 KiB
JavaScript
38 lines
1.4 KiB
JavaScript
// 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).
|