ON
← Back to feed
GermanyTechnology2 days ago

What is new in .NET 10.0 [28]: Asynchronous ZIP operations

The article discusses new asynchronous ZIP operations introduced in .NET 10.0 Preview 4. It highlights the addition of asynchronous methods in classes such as System.IO.Compression.ZipFile, System.IO.Compression.ZipArchive, and System.IO.Compression.ZipEntry. Examples include ExtractToDirectoryAsync(), ExtractToFileAsync(), CreateFromDirectoryAsync(), OpenAsync(), OpenReadAsync(), CreateAsync(), and CreateEntryFromFileAsync(). The article also provides sample code demonstrating these features.

Die ZIP-Komprimierung gibt es in der .NET-Basisklassenbibliothek seit dem klassischen .NET Framework 4.5 und im modernen .NET seit Version .NET Core 1.0.

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.

Seit .NET 10.0 Preview 4 gibt es nun in den Klassen System.IO.Compression.ZipFile , System.IO.Compression.ZipArchive und System.IO.Compression.ZipEntry asynchrone Pendants zu bestehenden synchronen Methoden. Zu den neuen Funktionen gehören unter anderem ExtractToDirectoryAsync() , ExtractToFileAsync() , CreateFromDirectoryAsync() , OpenAsync() , OpenReadAsync() , CreateAsync() und CreateEntryFromFileAsync() .

Folgender Code zeigt mehrere Beispiele für asynchrone ZIP-Operationen:

class FCL10_Zip

{

private const string ArchiveFileName = @"t:\CTempArchive.zip";

private const string SourceDirectoryName = @"c:\temp";

private const string DestinationDirectoryName = @"t:\CTempArchiveExtract";

private const string TempFileName = @"t:\tempfile.pdf";

public async Task Run()

{

CUI.Demo(nameof(FCL10_Zip));

// Prüfe, ob die Datei existiert

if (File.Exists(ArchiveFileName)) File.Delete(ArchiveFileName);

#region ZIP-Dateien erstellen und extrahieren

// ZIP erstellen

await ZipFile.CreateFromDirectoryAsync(SourceDirectoryName, ArchiveFileName, CompressionLevel.SmallestSize, includeBaseDirectory: true, entryNameEncoding: Encoding.UTF8);

// Prüfe, ob die Datei existiert

if (File.Exists(ArchiveFileName)) CUI.Green("ZIP-Datei erstellt: " + ArchiveFileName);

else CUI.Red("ZIP-Datei nicht erstellt: " + ArchiveFileName);

// ZIP extrahieren

await ZipFile.ExtractToDirectoryAsync(ArchiveFileName, DestinationDirectoryName, overwriteFiles: true);

// Prüfe, ob das Verzeichnis existiert

if (Directory.Exists(DestinationDirectoryName)) CUI.Green("Verzeichnis extrahiert: " + DestinationDirectoryName);

else CUI.Red("Verzeichnis nicht extrahiert: " + DestinationDirectoryName);

#endregion

#region Lesen und Schreiben von Einträgen in eine ZIP-Datei

using (var archiveStream = new FileStream(ArchiveFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))

{

await using (ZipArchive a = await ZipArchive.CreateAsync(archiveStream, ZipArchiveMode.Update, leaveOpen: false, entryNameEncoding: Encoding.UTF8))

{

// Suche die erste PDF-Datei in a.Entries

var pdfFileEntry = a.Entries.Where(x => x.Name.EndsWith(".pdf")).FirstOrDefault();

if (pdfFileEntry != null)

{

await pdfFileEntry.ExtractToFileAsync(destinationFileName: TempFileName, overwrite: true);

await using Stream entryStream = await pdfFileEntry.OpenAsync();

ZipArchiveEntry createdEntry = await a.CreateEntryFromFileAsync(sourceFileName: TempFileName, entryName: "Doppelt_" + pdfFileEntry.Name);

CUI.Green("Erste PDF-Datei wurde verdoppelt: " + pdfFileEntry.Name);

}

}

}

#endregion

}

}

( rme )

Read the full article at heise online
Source document: Microsoft .NET Documentation

1 reports

heise onlineIndependentCenter2 days ago
What is new in .NET 10.0 [28]: Asynchronous ZIP operations

The article discusses new asynchronous ZIP operations introduced in .NET 10.0 Preview 4. It highlights the addition of asynchronous methods in classes such as System.IO.Compression.ZipFile, System.IO.Compression.ZipArchive, and System.IO.Compression.ZipEntry. Examples include ExtractToDirectoryAsync(), ExtractToFileAsync(), CreateFromDirectoryAsync(), OpenAsync(), OpenReadAsync(), CreateAsync(), and CreateEntryFromFileAsync(). The article also provides sample code demonstrating these features.

Bias read (Center): The article focuses on technical updates to the .NET framework and does not present any political viewpoints, biases, or controversial topics. It is purely informative about software development features.

Official sources cited

Go to the primary sources (1)

The official sources this coverage is built on. Read them directly to bypass framing.