Arbeiten mit ZIP-Archiven in Java: Vollständige Anleitung zu java.util.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 Java: Vollständige Anleitung zu java.util.zip



Datenarchivierung ist eine der grundlegenden Aufgaben in der Softwareentwicklung. Java bietet einen leistungsstarken und flexiblen Werkzeugsatz für die Arbeit mit ZIP-Archiven "out of the box" – das Paket java.util.zip. In diesem Artikel werden wir im Detail besprechen, wie man ZIP-Archive mit den Standardmitteln von Java erstellt, entpackt und modifiziert.



Wichtige Klassen des Pakets java.util.zip

Das Paket java.util.zip enthält die wichtigsten Klassen für die Arbeit mit Archiven:

  • ZipOutputStream – zum Erstellen von ZIP-Archiven (Schreiben von Dateien in das Archiv)
  • ZipInputStream – zum Lesen und Entpacken von ZIP-Archiven
  • ZipEntry – repräsentiert einen einzelnen Eintrag (Datei/Verzeichnis) innerhalb des Archivs
  • ZipFile – für den direkten Zugriff auf den Archivinhalt ohne vollständiges Entpacken
  • CheckedOutputStream / CheckedInputStream – zur Überprüfung der Datenintegrität (CRC32, Adler32)


Erstellen eines ZIP-Archivs (ZipOutputStream)

Zum Erstellen eines Archivs wird ZipOutputStream verwendet, der einen normalen FileOutputStream umschließt. Jede hinzugefügte Datei wird durch ein ZipEntry-Objekt dargestellt.



import java.io.*;import java.util.zip.*;

public class CreateZip { public static void main(String[] args) throws IOException { String[] sourceFiles = {"file1.txt", "file2.txt", "image.png"}; String zipName = "archive.zip";

try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipName))) { byte[] buffer = new byte[1024];

for (String filePath : sourceFiles) { File file = new File(filePath); FileInputStream fis = new FileInputStream(file);

// Eintrag im Archiv erstellen ZipEntry zipEntry = new ZipEntry(file.getName()); zos.putNextEntry(zipEntry);

// Dateiinhalt schreiben int length; while ((length = fis.read(buffer)) > 0) { zos.write(buffer, 0, length); } zos.closeEntry(); fis.close(); System.out.println("Hinzugefügt: " + file.getName()); } } System.out.println("Archiv erstellt: " + zipName); }}


Wichtige Hinweise beim Erstellen eines Archivs:

  • Rufen Sie immer putNextEntry() vor dem Schreiben von Daten und closeEntry() danach auf
  • Für das Hinzufügen eines leeren Verzeichnisses verwenden Sie ZipEntry(name + "/") – der Name muss mit "/" enden
  • Verwenden Sie try-with-resources für das automatische Schließen der Streams


Entpacken eines ZIP-Archivs (ZipInputStream)

Zum Extrahieren von Dateien aus einem Archiv wird ZipInputStream verwendet. Das Lesen erfolgt sequenziell – Eintrag für Eintrag.



import java.io.*;import java.util.zip.*;

public class ExtractZip { public static void main(String[] args) throws IOException { String zipFile = "archive.zip"; String outputDir = "extracted";

File dir = new File(outputDir); if (!dir.exists()) dir.mkdirs();

try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile))) { ZipEntry entry; byte[] buffer = new byte[1024];

while ((entry = zis.getNextEntry()) != null) { String fileName = entry.getName(); File newFile = new File(outputDir + File.separator + fileName);

// Übergeordnete Verzeichnisse erstellen new File(newFile.getParent()).mkdirs();

// Datei schreiben FileOutputStream fos = new FileOutputStream(newFile); int length;

Empfehlungen