Vi stöter ofta på scenariot där flera ZIP-arkiv är inkapslade i ett annat ZIP. I sådana fall måste du först extrahera den överordnade ZIP-filen och sedan de kapslade arkiven ett efter ett. För att göra det enklare för dig kommer vi i den här artikeln att visa hur man extraherar de kapslade ZIP-arkiven i C# .NET utan att skriva komplex kod.

C# .NET API för att extrahera kapslade ZIP-arkiv

För att packa upp de kapslade ZIP-arkiven kommer vi att använda Aspose.ZIP för .NET. API:et är utformat för att utföra arkiveringsoperationer inifrån .NET-applikationerna. Det låter dig skapa och manipulera populära arkivformat sömlöst. Du kan antingen ladda ner API:s DLL eller installera den med NuGet.

PM> Install-Package Aspose.Zip

Extrahera kapslade ZIP-arkiv i C#

För att demonstrera utvinningen av kapslade ZIP-arkiv har vi skapat följande ZIP-fil som innehåller 3 poster.

Kapslade ZIP-arkiv

Kapslade ZIP-arkiv

Vi kommer att extrahera varje kapslat ZIP-arkiv och spara dess innehåll i en separat mapp. Följande är stegen för att extrahera kapslade ZIP-arkiv i C#.

Följande kodexempel visar hur man packar upp kapslade ZIP-arkiv i C# .NET.

// Öppna ZIP-fil i en filström
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
    // Ladda ZIP-fil med Archive class
    using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
    {
        // Få åtkomst till varje post i ZIP-arkivet
        foreach(ArchiveEntry entry in archive.Entries)
        {
            if(entry.Name.ToLower().Contains(".zip"))
            {
                // Skapa minnesström för kapslat arkiv
                MemoryStream nestedArchiveStream = new MemoryStream();

                // Kopiera arkiv till minnesström
                entry.Open().CopyTo(nestedArchiveStream);

                // Ladda det kapslade arkivet från minnesströmmen
                using (var nestedArchive = new Archive(nestedArchiveStream))
                {
                    // Extrahera arkiv till disk.
                    nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
                }                               

            }

        } 
    }
}

Följande är skärmdumpen av de extraherade ZIP-arkiven.

Extraherar kapslade ZIP-arkiv i C# .NET

Uppackade kapslade arkiv

Skaffa en gratis API-licens

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

Slutsats

I den här artikeln har du lärt dig hur du extraherar kapslade ZIP-arkiv i C#. Steg-för-steg-guiden och kodexemplet har visat hur man packar upp varje kapslat arkiv till en separat mapp. Dessutom kan du besöka dokumentation för att utforska andra funktioner i Aspose.ZIP för .NET. Du kan också ställa dina frågor via vårt forum.

Se även