Często spotykamy się ze scenariuszem, w którym wiele archiwów ZIP jest zamkniętych w innym pliku ZIP. W takich przypadkach najpierw należy rozpakować nadrzędny plik ZIP, a następnie jeden po drugim zagnieżdżone archiwa. Aby Ci to ułatwić, w tym artykule zademonstrujemy, jak wyodrębnić zagnieżdżone archiwa ZIP w C# .NET bez pisania skomplikowanego kodu.

C# .NET API do wyodrębniania zagnieżdżonych archiwów ZIP

Aby rozpakować zagnieżdżone archiwa ZIP, użyjemy Aspose.ZIP for .NET. API jest przeznaczone do wykonywania operacji archiwizacji z poziomu aplikacji .NET. Pozwala bezproblemowo tworzyć popularne formaty archiwów i nimi manipulować. Możesz pobrać bibliotekę DLL interfejsu API lub zainstalować ją za pomocą NuGet.

PM> Install-Package Aspose.Zip

Wyodrębnij zagnieżdżone archiwa ZIP w C#

Aby zademonstrować wyodrębnianie zagnieżdżonych archiwów ZIP, utworzyliśmy następujący plik ZIP, który zawiera 3 wpisy.

Zagnieżdżone archiwa ZIP

Zagnieżdżone archiwa ZIP

Rozpakujemy każde zagnieżdżone archiwum ZIP i zapiszemy jego zawartość w osobnym folderze. Poniżej przedstawiono kroki wyodrębniania zagnieżdżonych archiwów ZIP w języku C#.

Poniższy przykładowy kod pokazuje, jak rozpakować zagnieżdżone archiwa ZIP w języku C# .NET.

// Otwórz plik ZIP w strumieniu plików
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
    // Załaduj plik ZIP przy użyciu klasy Archive
    using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
    {
        // Uzyskaj dostęp do każdego wpisu w archiwum ZIP
        foreach(ArchiveEntry entry in archive.Entries)
        {
            if(entry.Name.ToLower().Contains(".zip"))
            {
                // Utwórz strumień pamięci dla zagnieżdżonego archiwum
                MemoryStream nestedArchiveStream = new MemoryStream();

                // Skopiuj archiwum do strumienia pamięci
                entry.Open().CopyTo(nestedArchiveStream);

                // Załaduj zagnieżdżone archiwum ze strumienia pamięci
                using (var nestedArchive = new Archive(nestedArchiveStream))
                {
                    // Wypakuj archiwum na dysk.
                    nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
                }                               

            }

        } 
    }
}

Poniżej znajduje się zrzut ekranu wyodrębnionych archiwów ZIP.

Wyodrębnianie zagnieżdżonych archiwów ZIP w języku C# .NET

Rozpakowane zagnieżdżone archiwa

Uzyskaj bezpłatną licencję API

Możesz otrzymać darmową tymczasową licencję na korzystanie z Aspose.ZIP for .NET bez ograniczeń ewaluacyjnych.

Wniosek

W tym artykule nauczyłeś się, jak wyodrębnić zagnieżdżone archiwa ZIP w języku C#. Przewodnik krok po kroku i przykładowy kod pokazują, jak rozpakować każde zagnieżdżone archiwum do osobnego folderu. Poza tym możesz odwiedzić dokumentację, aby poznać inne funkcje Aspose.ZIP for .NET. Możesz także zadawać pytania za pośrednictwem naszego forum.

Zobacz też