Neu in .NET 8.0 [23]: Verbesserungen für ZipFile zur Arbeit mit Dateiarchiven

Die Klasse ZipFile besitzt nun Methoden, um ein ZIP-Archiv aus einem Dateisystemordner zu erstellen und Dateien in einen Zielordner zu entpacken.

In Pocket speichern vorlesen Druckansicht

(Bild: rawf8/Shutterstock.com)

Lesezeit: 1 Min.
Von
  • Dr. Holger Schwichtenberg

Die Klasse System.IO.Compression.ZipFile, die es seit dem klassischen .NET Framework 4.5 und im modernen .NET seit Version .NET Core 1.0 gibt, erhält zwei neue statische Methoden CreateFromDirectory() und ExtractToDirectory().

Der Dotnet-Doktor – Holger Schwichtenberg

Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

Sie ermöglichen es, ein ZIP-Archiv aus einem Dateisystemordner zu erstellen und Dateien in einen Zielordner zu entpacken.

Die Serie zu den Neuerungen in .NET 8.0
var quelle = @"t:\dev\";
var ziel = @"t:\dev.zip";
var ziel2 = @"t:\dev2";
 
Console.WriteLine("Komprimiere Ordner: " + quelle);
 
var file = new FileInfo(ziel);
if (file.Exists)
{
 Console.WriteLine("Zieldatei existiert schon und wird gelöscht: " + ziel);
 file.Delete();
}
 
System.IO.Compression.ZipFile.CreateFromDirectory(quelle, ziel, 
    System.IO.Compression.CompressionLevel.Optimal, 
    includeBaseDirectory: true, 
    entryNameEncoding: Encoding.UTF8);
Console.WriteLine("Datei erzeugt: " + ziel);

  file = new FileInfo(ziel);
Console.WriteLine(Math.Round((decimal)file.Length / 1024 / 1024, 2)
                  + " MB1");
 
Console.WriteLine("Extrahiere ZIP-Datei " + ziel + " nach " + ziel2);
 
System.IO.Compression.ZipFile.ExtractToDirectory(ziel, ziel2, 
                                                 overwriteFiles: true);
 
Console.WriteLine("Fertig!");

(rme)