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



In der modernen Java-Entwicklung besteht häufig die Notwendigkeit, Dateien zu packen und zu entpacken. ZIP ist eines der beliebtesten Komprimierungsformate, das von der Standard-Java-Bibliothek unterstützt wird. Das integrierte Paket java.util.zip bietet alle notwendigen Werkzeuge für die Arbeit mit ZIP-Archiven ohne Installation von Abhängigkeiten Dritter.



Hauptklassen des Pakets java.util.zip



Das Paket java.util.zip enthält mehrere Schlüsselklassen für die Arbeit mit Archiven:



  • ZipOutputStream — zum Erstellen von ZIP-Archiven und Schreiben von Dateien in diese
  • ZipInputStream — zum Lesen des Inhalts von ZIP-Archiven
  • ZipEntry — repräsentiert einen einzelnen Eintrag (Datei oder Verzeichnis) innerhalb des Archivs
  • ZipFile — für den direkten Zugriff auf Archiveinträge nach Namen
  • Deflater/Inflater — Low-Level-Klassen zum Komprimieren/Dekomprimieren von Daten


Erstellen eines ZIP-Archivs



Zum Erstellen eines Archivs wird ZipOutputStream verwendet. Jede hinzugefügte Datei wird als ZipEntry dargestellt. Betrachten wir ein Beispiel, das mehrere Dateien in ein Archiv packt:



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

public class CreateZipExample { public static void main(String[] args) { // Array der zu archivierenden Dateien String[] sourceFiles = {"file1.txt", "file2.txt", "image.png"}; String zipFileName = "archive.zip";

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

for (String filePath : sourceFiles) { File file = new File(filePath); // Eintrag im Archiv erstellen ZipEntry zipEntry = new ZipEntry(file.getName()); zos.putNextEntry(zipEntry);

// Datei lesen und ins Archiv schreiben try (FileInputStream fis = new FileInputStream(file)) { int length; while ((length = fis.read(buffer)) > 0) { zos.write(buffer, 0, length); } } zos.closeEntry(); } System.out.println("Archiv erstellt: " + zipFileName); } catch (IOException e) { e.printStackTrace(); } }}


Entpacken eines ZIP-Archivs



Zum Lesen eines Archivs wird ZipInputStream verwendet. Die Methode getNextEntry() gibt nacheinander alle Archiveinträge zurück:



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

public class ExtractZipExample { public static void main(String[] args) { String zipFileName = "archive.zip"; String outputDir = "extracted_files";

new File(outputDir).mkdir();

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

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

// Verzeichnisse bei Bedarf erstellen new File(newFile.getParent()).mkdirs();

try (FileOutputStream fos = new FileOutputStream(newFile)) { int length; while ((length = zis.read(buffer)) > 0) { fos.write(buffer, 0, length); } } zis.closeEntry(); System.out.println("Entpackt: " + fileName); } } catch (IOException e) { e.printStackTrace(); } }}


Arbeiten mit ZipFile für wahlfreien Zugriff

\

Empfehlungen