
När du hanterar ZIP-arkiv kan du stöta på en situation där en ZIP-fil innehåller andra ZIP-filer, vilket leder till en nästlad struktur. Om ditt mål är att 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 hjälp av det kraftfulla Aspose.ZIP för .NET.
Innehållsförteckning
- Översikt över .NET API:et 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:et 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. Inledningsvis 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:et att extraheras till det överordnade ZIP:et, vilket leder till följande struktur:
flatten.zip
├ first.txt
├ picture.gif
├ game.exe
└ subitem.bin
Implementeringssteg
Här är hur du programmässigt skapar ett platt ZIP-arkiv i C#:
- Ladda det överordnade ZIP-arkivet: Använd Archive klassen för att ladda det överordnade ZIP:et.
- Initiera listor: Skapa listor för att lagra:
- Poster att ta bort från det överordnade ZIP:et
- Extraherade poster och deras namn
- Iterera genom arkivposter: Loop genom varje ArchiveEntry i det överordnade ZIP:et med hjälp av Archive.Entries kollektionen.
- Bearbeta varje post:
- Kontrollera om posten är ett ZIP-arkiv med
ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase)
. - Om det är, lägg till det 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:et.
- 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:et: 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 visar hur man skapar ett platt ZIP-arkiv i C#:
Få en gratis API-licens
Du kan få en gratis temporär licens för att använda Aspose.ZIP för .NET utan några utvärderingsbegränsningar.
Slutsats
I denna handledning 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:et, 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
- Lägg till filer eller mappar i ZIP-arkiv i C#
- Extrahera filer i ZIP-arkiv med C#
- Sammanfoga flera ZIP- eller TAR-arkiv i C#
- Skapa körbar självextraherande arkiv i C#
Genom att följa dessa steg kan du enkelt implementera C# platt zip-fil komprimering i dina applikationer, vilket säkerställer ett enkelt fil zip-arkiv som är både effektivt och lätt att hantera.