Arbeiten mit ZIP-Archiven in Node.js: Die Bibliotheken archiver und adm-zip

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit ZIP-Archiven in Node.js: Die Bibliotheken archiver und adm-zip



In der modernen Webentwicklung mit Node.js besteht häufig die Notwendigkeit, Dateien in Archive zu packen oder Daten daraus zu extrahieren. Ob es sich um Backups, das Herunterladen mehrerer Dateien als ein Archiv oder die Verarbeitung von Benutzerdaten handelt – die Arbeit mit dem ZIP-Format bleibt gefragt. Für Node.js gibt es mehrere beliebte Bibliotheken, und in diesem Artikel betrachten wir die beiden leistungsstärksten und praktischsten: archiver (zum Erstellen von Archiven) und adm-zip (zum Lesen und Bearbeiten von Archiven).



Wozu braucht man Bibliotheken für die Arbeit mit ZIP?

Node.js bietet standardmäßig keine integrierten Werkzeuge für die Arbeit mit Archiven. Obwohl es das Modul zlib zur Komprimierung einzelner Streams gibt, sind für die Erstellung vollwertiger ZIP-Dateien mit mehreren Dateien und Ordnern spezialisierte Lösungen erforderlich. Die Bibliotheken archiver und adm-zip lösen diese Aufgaben, indem sie eine einfache API und hohe Leistung bieten.



Installation der Bibliotheken

Beide Bibliotheken werden über npm installiert. Führen Sie im Terminal aus:

npm install archiver adm-zip


Die Bibliothek archiver: Erstellen von ZIP-Archiven

archiver ist eine Bibliothek zum Erstellen von Archiven in verschiedenen Formaten (ZIP, TAR, GZIP). Sie arbeitet mit Streams, was eine effiziente Verarbeitung großer Datenmengen ermöglicht, ohne die gesamte Datei in den Speicher laden zu müssen.



Hauptfunktionen von archiver:

  • Erstellen von ZIP-Archiven mit anpassbarem Komprimierungsgrad
  • Hinzufügen von Dateien und ganzen Verzeichnissen
  • Arbeit mit Streams zur Speicherschonung
  • Unterstützung für Kommentare und Metadaten


Beispiel: Erstellen eines einfachen ZIP-Archivs

const fs = require('fs');const archiver = require('archiver');

// Erstellen eines Schreibstreams in eine Dateiconst output = fs.createWriteStream('example.zip');const archive = archiver('zip', { zlib: { level: 9 } }); // maximale Komprimierung

// Ereignisbehandlungoutput.on('close', () => { console.log(`Archiv erstellt: ${archive.pointer()} Bytes`);});

archive.on('error', (err) => { throw err;});

// Dateien hinzufügenarchive.append('Inhalt der Datei 1', { name: 'file1.txt' });archive.file('/path/to/existing/file.txt', { name: 'renamed-file.txt' });archive.directory('my_folder/', 'new_folder_name');

// Archivierung abschließenarchive.pipe(output);archive.finalize();


Beispiel: Archivierung mit Stream-Übertragung

const http = require('http');const archiver = require('archiver');

http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'application/zip', 'Content-disposition': 'attachment; filename=download.zip' });

const archive = archiver('zip', { zlib: { level: 5 } }); archive.pipe(res);

archive.append('Textdatei', { name: 'text.txt' }); archive.append(Buffer.from([0x00, 0x01, 0x02]), { name: 'binary.bin' }); archive.finalize();}).listen(3000);


Die Bibliothek adm-zip: Lesen und Extrahieren von Archiven

adm-zip ist eine universelle Bibliothek für die Arbeit mit ZIP-Archiven: Lesen, Schreiben, Aktualisieren und Extrahieren. Im Gegensatz zu archiver arbeitet sie nicht nur mit Streams, sondern auch mit Puffern, was für kleine Archive praktisch ist.



Hauptfunktionen von adm-zip:

  • Lesen vorhandener ZIP-Dateien
  • Extrahieren aller oder einzelner Dateien
  • Schreiben neuer Archive (Alternative zu archiver)
  • Arbeit mit Puffern und Zeichenketten


Beispiel: Extrahieren von Dateien aus einem Archiv

const AdmZip = require('adm-zip');

// Vorhandenes Archiv ladenconst zip = new AdmZip('./example.zip');

// Dateiliste abrufenconst zipEntries = zip.getEntries();zipEntries.forEach((entry) => { console.log(`Datei

Empfehlungen