Skapa platt ZIP-arkiv i C#

När du arbetar med ZIP-arkiv kan du stöta på ett scenario där en ZIP-fil innehåller andra ZIP-filer, vilket skapar en nästlad struktur. Om du vill strömlinjeforma detta genom att extrahera alla inre ZIP-arkiv till det yttre arkivet, är du på rätt plats. I denna artikel kommer vi att utforska hur man skapar ett platt ZIP-arkiv i C# med det kraftfulla Aspose.ZIP för .NET.

Innehållsförteckning

Översikt över .NET API för att skapa platta ZIP-arkiv

För att skapa platta ZIP-arkiv kommer vi att använda Aspose.ZIP för .NET biblioteket. Detta robusta arkiverings-API låter dig skapa och extrahera olika arkivformat, inklusive ZIP, TAR, GZip och 7z. Du kan enkelt installera detta bibliotek från NuGet eller ladda ner dess DLL från nedladdningssektionen.

PM> Install-Package Aspose.Zip

Steg för att skapa ett platt ZIP-arkiv i C#

För att bättre förstå strukturen av ett platt ZIP-arkiv, överväg följande exempel. Initialt har vi ett ZIP-arkiv som innehåller ett annat ZIP-arkiv:

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

Efter att ha transformerat detta ZIP-arkiv till en platt struktur kommer alla poster från det inre ZIP att extraheras till det överordnade ZIP, vilket leder till följande struktur:

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

Implementeringssteg

Här är hur du programmatisk skapar ett platt ZIP-arkiv i C#:

  1. Ladda det överordnade ZIP-arkivet: Använd Archive klassen för att ladda det överordnade ZIP.
  2. Initiera listor: Skapa listor för att lagra:
    • Poster att ta bort från det överordnade ZIP
    • Extraherade poster och deras namn
  3. Iterera genom arkivposter: Loop genom varje ArchiveEntry i det överordnade ZIP med hjälp av Archive.Entries samlingen.
  4. Bearbeta varje post:
    • Kontrollera om posten är ett ZIP-arkiv med ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase).
    • Om så är fallet, lägg till den i listan över poster att ta bort.
    • Öppna posten i ett MemoryStream objekt med ArchiveEntry.Open().CopyTo(MemoryStream).
    • Iterera genom posterna i det inre ZIP-arkivet och utför följande:
      • Lägg till namnet på varje post i listan över poster som ska läggas till.
      • Ladda varje post i en MemoryStream med ArchiveEntry.Open().CopyTo(MemoryStream).
      • Lägg till posten i listan över poster som ska läggas till det överordnade ZIP.
  5. Ta bort inre ZIP-poster: Loop genom listan över inre ZIP-arkiv och ta bort varje post med hjälp av Archive.DeleteEntry(ArchiveEntry) metoden.
  6. Lägg till nya poster i det överordnade ZIP: Loop genom listan över poster att lägga till och inkludera varje post med hjälp av Archive.CreateEntry(String, Stream) metoden.
  7. Spara det överordnade ZIP-arkivet: Slutligen, spara det modifierade överordnade ZIP-arkivet med hjälp av Archive.Save(String) metoden.

Här är ett kodexempel som demonstrerar hur man skapar ett platt ZIP-arkiv i C#:

Få en gratis API-licens

Du kan få en gratis tillfällig licens för att använda Aspose.ZIP för .NET utan några utvärderingsbegränsningar.

Slutsats

I den här handledningen har du lärt dig hur man effektivt skapar ett platt ZIP-arkiv med C#. Vi visade processen för att extrahera inre ZIP-arkiv till det överordnade ZIP, vilket effektivt undviker nästlade mappar. För mer information, tveka inte att kolla in Aspose.ZIP för .NET dokumentationen, eller kontakta oss via vårt forum.

Se även