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
- Steg för att skapa ett platt ZIP-arkiv
- Få en gratis API-licens
- Slutsats
- Se även
Ö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#:
- Ladda det överordnade ZIP-arkivet: Använd Archive klassen för att ladda det överordnade ZIP.
- Initiera listor: Skapa listor för att lagra:
- Poster att ta bort från det överordnade ZIP
- Extraherade poster och deras namn
- Iterera genom arkivposter: Loop genom varje ArchiveEntry i det överordnade ZIP med hjälp av Archive.Entries samlingen.
- 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
medArchiveEntry.Open().CopyTo(MemoryStream)
. - Lägg till posten i listan över poster som ska läggas till det överordnade ZIP.
- Kontrollera om posten är ett ZIP-arkiv med
- 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.
- 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.
- 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.