Arbeiten mit ZIP-Archiven in C# (.NET): vollständige Anleitung

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 C# (.NET): Erstellen, Lesen und Verwalten



In modernen Anwendungen besteht häufig die Notwendigkeit, Dateien zu komprimieren, um Speicherplatz zu sparen oder die Übertragung zu erleichtern. Die .NET-Plattform bietet leistungsstarke und praktische Werkzeuge für die Arbeit mit ZIP-Archiven direkt aus dem Kasten. Mit dem Namespace System.IO.Compression können Sie Archive einfach erstellen, extrahieren und ändern, ohne zusätzliche Bibliotheken installieren zu müssen. In diesem Artikel werden wir alle grundlegenden Operationen im Detail behandeln.



Einbinden der erforderlichen Namespaces

Stellen Sie zu Beginn sicher, dass Ihrem Projekt die folgenden Direktiven hinzugefügt wurden:

using System;using System.IO;using System.IO.Compression;using System.Linq;


Erstellen eines ZIP-Archivs

Der einfachste Weg, ein Archiv zu erstellen, ist die Verwendung der Klasse ZipFile. Sie ist ab .NET Framework 4.5 und .NET Core verfügbar.



Archiv aus einem Ordner erstellen

string sourceDirectory = @"C:\\MyDocuments";string zipFilePath = @"C:\\MyArchive.zip";

// Erstellt ein Archiv aus allen Dateien im angegebenen OrdnerZipFile.CreateFromDirectory(sourceDirectory, zipFilePath);Console.WriteLine("Archiv erstellt: " + zipFilePath);


Archiv mit zusätzlichen Parametern erstellen

Sie können die Komprimierungsstufe angeben und einen Pfad-Präfix innerhalb des Archivs hinzufügen:

string sourceDir = @"C:\\Data";string outputZip = @"C:\\Data.zip";

// CompressionLevel.Optimal - maximale Komprimierung// includeBaseDirectory: true - behält die Ordnerstruktur beiZipFile.CreateFromDirectory( sourceDir, outputZip, CompressionLevel.Optimal, includeBaseDirectory: true);Console.WriteLine("Archiv mit Optimierung erstellt.");


Dateien aus einem Archiv extrahieren

Gesamtes Archiv in einen Ordner entpacken

string zipPath = @"C:\\MyArchive.zip";string extractPath = @"C:\\ExtractedFiles";

// Entpackt den gesamten InhaltZipFile.ExtractToDirectory(zipPath, extractPath);Console.WriteLine("Archiv erfolgreich entpackt.");


Entpacken mit Überschreiben vorhandener Dateien

// In .NET 6+ kann das Überschreiben angegeben werdenZipFile.ExtractToDirectory(zipPath, extractPath, overwriteFiles: true);


Arbeiten mit einzelnen Einträgen im Archiv

Die Klasse ZipArchive bietet vollständige Kontrolle über den Inhalt des Archivs.



Liste der Dateien im Archiv lesen

using (ZipArchive archive = ZipFile.OpenRead(@"C:\\Archive.zip")){    foreach (ZipArchiveEntry entry in archive.Entries)    {        Console.WriteLine($"Datei: {entry.FullName}, Größe: {entry.Length} Bytes");    }}


Bestimmte Datei aus dem Archiv extrahieren

string zipFilePath = @"C:\\Archive.zip";string entryName = @"folder\\document.txt"; // Pfad innerhalb des Archivsstring outputPath = @"C:\\Output\\document.txt";

using (ZipArchive archive = ZipFile.OpenRead(zipFilePath)){ ZipArchiveEntry entry = archive.GetEntry(entryName); if (entry != null) { // Datei extrahieren entry.ExtractToFile(outputPath, overwrite: true); Console.WriteLine($"Datei '{entryName}' extrahiert."); } else { Console.WriteLine("Datei im Archiv nicht gefunden."); }}


Hinzufügen und Löschen von Dateien in einem vorhandenen Archiv

Um ein vorhandenes Archiv zu ändern, öffnen Sie es im Modus ZipArchiveMode.Update:



Neue Datei zum Archiv hinzufügen

string existingZip = @"C:\\Archive.zip";string fileToAdd = @"C:\\NewFile.txt";

using (ZipArchive archive = ZipFile.Open(existingZip, ZipArchiveMode.Update)){ // Datei mit dem Namen "NewFile.txt" im Stammverzeichnis des Archivs hinzufügen archive.CreateEntryFromFile(fileToAdd, "NewFile.txt"); Console.WriteLine("Datei zum Archiv hinzugefügt.");}


Datei aus dem Archiv löschen

using (ZipArchive archive                    

Empfehlungen