Erstellen eines flachen ZIP-Archivs in C#

Beim Umgang mit ZIP-Archiven können Sie auf eine Situation stoßen, in der eine ZIP-Datei andere ZIP-Dateien enthält, was zu einer verschachtelten Struktur führt. Wenn Ihr Ziel darin besteht, dies zu optimieren, 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 des 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

Nachdem wir dieses ZIP-Archiv in eine flache Struktur umgewandelt haben, werden alle Einträge aus der inneren ZIP in die übergeordnete ZIP extrahiert, was zur folgenden 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 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: Schleifen Sie durch 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, mit ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase).
    • 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. Löschen Sie die inneren ZIP-Einträge: Schleifen Sie durch die Liste der inneren ZIP-Archive und löschen Sie jeden Eintrag mit der Archive.DeleteEntry(ArchiveEntry) Methode.
  6. Fügen Sie neue Einträge zum übergeordneten ZIP hinzu: Schleifen Sie durch 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: Schließlich speichern Sie 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 Evaluierungseinschränkungen zu verwenden.

Fazit

In diesem Tutorial haben Sie gelernt, wie man effizient ein flaches ZIP-Archiv mit C# erstellt. Wir haben den Prozess des Extrahierens innerer ZIP-Archive in das übergeordnete ZIP demonstriert und damit effektiv verschachtelte Ordner vermieden. Für weitere Informationen können Sie die Aspose.ZIP für .NET-Dokumentation einsehen oder uns über unser Forum kontaktieren.

Siehe auch

Indem Sie diese Schritte befolgen, können Sie C# flache ZIP-Dateikompression in Ihren Anwendungen einfach implementieren und ein einzelnes ZIP-Archiv erstellen, das sowohl effizient als auch einfach zu verwalten ist.