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 Auch in der Bibliothek
Mapster C# (.NET): Komplettguide mit Beispielen
Geolokalisierung und Karten in Swift für iOS/macOS: vollständiger Leitfaden
Swagger/OpenAPI-Generierung für TypeScript: Bibliotheken und Werkzeuge
Supertest für JavaScript (Node.js): Komplettguide mit Beispielen
Wolverine für C# (.NET): Komplettguide mit Beispielen