Wir stoßen oft auf das Szenario, in dem mehrere ZIP-Archive in einem anderen ZIP eingekapselt sind. In solchen Fällen müssen Sie zuerst die übergeordnete ZIP-Datei und dann die verschachtelten Archive nacheinander extrahieren. Um Ihnen die Arbeit zu erleichtern, zeigen wir Ihnen in diesem Artikel, wie Sie die verschachtelten ZIP-Archive in C# .NET extrahieren, ohne komplexen Code schreiben zu müssen.
C# .NET-API zum Extrahieren verschachtelter ZIP-Archive
Um die verschachtelten ZIP-Archive zu entpacken, verwenden wir Aspose.ZIP for .NET. Die API wurde entwickelt, um Archivierungsvorgänge innerhalb der .NET-Anwendungen auszuführen. Es ermöglicht Ihnen, gängige Archivformate nahtlos zu erstellen und zu bearbeiten. Sie können die DLL der API entweder herunterladen oder sie mit NuGet installieren.
PM> Install-Package Aspose.Zip
Extrahieren Sie verschachtelte ZIP-Archive in C#
Um das Extrahieren von verschachtelten ZIP-Archiven zu demonstrieren, haben wir die folgende ZIP-Datei erstellt, die 3 Einträge enthält.
Wir werden jedes verschachtelte ZIP-Archiv extrahieren und seinen Inhalt in einem separaten Ordner speichern. Im Folgenden sind die Schritte zum Extrahieren verschachtelter ZIP-Archive in C# aufgeführt.
- Erstellen Sie zuerst ein FileStream-Objekt, um die ZIP-Datei zu laden.
- Laden Sie dann die ZIP-Datei mit der Klasse Archive.
- Durchlaufen Sie jeden ArchiveEntry in der Archive.Entries-Sammlung.
- Filtern Sie die ZIP-Archive in der Sammlung und führen Sie für jedes Archiv die folgenden Schritte aus:
- Erstellen Sie ein MemoryStream-Objekt und kopieren Sie den Archiveintrag hinein, indem Sie die Methode ArchiveEntry.Open().CopyTo(Stream) verwenden.
- Erstellen Sie eine Instanz der Klasse Archive, um das verschachtelte Archiv zu laden.
- Extrahieren Sie schließlich das Archiv mit der Methode Archive.ExtractToDirectory(string) in einen Ordner.
Das folgende Codebeispiel zeigt, wie verschachtelte ZIP-Archive in C# .NET entpackt werden.
// ZIP-Datei in einem Dateistream öffnen
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
// Laden Sie die ZIP-Datei mit der Archivklasse
using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
{
// Greifen Sie auf jeden Eintrag im ZIP-Archiv zu
foreach(ArchiveEntry entry in archive.Entries)
{
if(entry.Name.ToLower().Contains(".zip"))
{
// Speicherstrom für verschachteltes Archiv erstellen
MemoryStream nestedArchiveStream = new MemoryStream();
// Archiv in Speicherstrom kopieren
entry.Open().CopyTo(nestedArchiveStream);
// Laden Sie das verschachtelte Archiv aus dem Speicherstrom
using (var nestedArchive = new Archive(nestedArchiveStream))
{
// Archiv auf Festplatte extrahieren.
nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
}
}
}
}
}
Das Folgende ist der Screenshot der extrahierten ZIP-Archive.
Holen Sie sich eine kostenlose API-Lizenz
Sie können eine kostenlose temporäre Lizenz erwerben, um Aspose.ZIP für .NET ohne Evaluierungseinschränkungen zu verwenden.
Fazit
In diesem Artikel haben Sie gelernt, wie Sie verschachtelte ZIP-Archive in C# extrahieren. Die Schritt-für-Schritt-Anleitung und das Codebeispiel haben gezeigt, wie jedes verschachtelte Archiv in einen separaten Ordner entpackt wird. Außerdem können Sie Dokumentation besuchen, um andere Funktionen von Aspose.ZIP für .NET zu erkunden. Sie können Ihre Fragen auch über unser Forum stellen.