Erstellen eines flachen ZIP-Archivs in C#

Beim Arbeiten mit ZIP-Archiven können Sie auf ein Szenario stoßen, in dem eine ZIP-Datei andere ZIP-Dateien enthält, was eine geschachtelte Struktur erzeugt. Wenn Sie dies vereinfachen möchten, indem Sie alle inneren ZIP-Archive in das äußere Archiv extrahieren, sind Sie hier genau richtig. In diesem Artikel werden wir erforschen, wie man ein flaches ZIP-Archiv in C# erstellt unter Verwendung der leistungsstarken Aspose.ZIP für .NET.

Inhaltsverzeichnis

Überblick über die .NET-API zum Erstellen flacher ZIP-Archive

Um flache ZIP-Archive zu erstellen, verwenden wir die Aspose.ZIP für .NET Bibliothek. Diese robuste Archivierungs-API ermöglicht es Ihnen, verschiedene Archivformate zu erstellen und zu extrahieren, einschließlich ZIP, TAR, GZip und 7z. Sie können diese Bibliothek einfach von NuGet installieren oder ihre DLL aus dem Download-Bereich herunterladen.

PM> Install-Package Aspose.Zip

Schritte zum Erstellen eines flachen ZIP-Archivs in C#

Um die Struktur eines flachen ZIP-Archivs besser zu verstehen, betrachten Sie das folgende Beispiel. Zunächst haben wir ein ZIP-Archiv, das ein anderes ZIP-Archiv enthält:

parent.zip
 ├ first.txt
 ├ inner.zip
 │ ├ game.exe
 │ └ subitem.bin
 └ picture.gif

Nach der Umwandlung dieses ZIP-Archivs in eine flache Struktur werden alle Einträge aus der inneren ZIP in die übergeordnete ZIP extrahiert, was zu folgender Struktur führt:

flatten.zip
 ├ first.txt
 ├ picture.gif
 ├ game.exe
 └ subitem.bin

Implementierungsschritte

So erstellen Sie programmgesteuert ein flaches ZIP-Archiv in C#:

  1. Laden Sie das übergeordnete ZIP-Archiv: Verwenden Sie die Archive Klasse, um das übergeordnete ZIP zu laden.
  2. Listen initialisieren: Erstellen Sie Listen, um Folgendes zu speichern:
    • Einträge, die aus dem übergeordneten ZIP gelöscht werden sollen
    • Extrahierte Einträge und deren Namen
  3. Durchlaufen Sie die Archiv-Einträge: Durchlaufen Sie jeden ArchiveEntry im übergeordneten ZIP mit der Archive.Entries Sammlung.
  4. Verarbeiten Sie jeden Eintrag:
    • Überprüfen Sie, ob der Eintrag ein ZIP-Archiv ist, indem Sie ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase) verwenden.
    • Wenn ja, fügen Sie ihn der Liste der zu löschenden Einträge hinzu.
    • Öffnen Sie den Eintrag in ein MemoryStream Objekt mit ArchiveEntry.Open().CopyTo(MemoryStream).
    • Durchlaufen Sie die Einträge des inneren ZIP-Archivs und führen Sie Folgendes aus:
      • Fügen Sie den Namen jedes Eintrags der Liste der hinzuzufügenden Einträge hinzu.
      • Laden Sie jeden Eintrag in einen MemoryStream mit ArchiveEntry.Open().CopyTo(MemoryStream).
      • Fügen Sie den Eintrag der Liste der hinzuzufügenden Einträge zum übergeordneten ZIP hinzu.
  5. Innere ZIP-Einträge löschen: Durchlaufen Sie die Liste der inneren ZIP-Archive und löschen Sie jeden Eintrag mit der Archive.DeleteEntry(ArchiveEntry) Methode.
  6. Neue Einträge zum übergeordneten ZIP hinzufügen: Durchlaufen Sie die Liste der hinzuzufügenden Einträge und fügen Sie jeden Eintrag mit der Archive.CreateEntry(String, Stream) Methode hinzu.
  7. Speichern Sie das übergeordnete ZIP-Archiv: Speichern Sie schließlich das modifizierte übergeordnete ZIP-Archiv mit der Archive.Save(String) Methode.

Hier ist ein Codebeispiel, das zeigt, wie man ein flaches ZIP-Archiv in C# erstellt:

Kostenlose API-Lizenz erhalten

Sie können eine kostenlose temporäre Lizenz erhalten, um Aspose.ZIP für .NET ohne Einschränkungen der Evaluierung zu verwenden.

Fazit

In diesem Tutorial haben Sie gelernt, wie man effizient ein flaches ZIP-Archiv mit C# erstellt. Wir haben den Prozess demonstriert, wie man innere ZIP-Archive in das übergeordnete ZIP extrahiert und so geschachtelte Ordner vermeidet. Für weitere Informationen können Sie gerne die Aspose.ZIP für .NET-Dokumentation einsehen oder uns über unser Forum kontaktieren.

Siehe auch