Połącz wiele archiwów ZIP lub TAR w C#

Podczas pracy z archiwami z poziomu aplikacji .NET może być konieczne scalenie wielu plików ZIP lub TAR. Na przykład możesz chcieć wyodrębnić pliki i foldery z wielu archiwów i umieścić je w jednym archiwum. Aby to osiągnąć, w tym artykule omówiono sposób scalania wielu plików ZIP lub TAR w języku C#. Omówimy łączenie ZIP w ZIP, TAR w TAR, ZIP w TAR i TAR w ZIP.

C# .NET API do scalania plików ZIP i TAR

Aby połączyć wiele archiwów ZIP i TAR, wykorzystamy Aspose.ZIP for .NET. Jest to bogaty w funkcje interfejs API .NET, który umożliwia tworzenie i manipulowanie różnymi popularnymi formatami archiwów. Możesz pobrać bibliotekę DLL interfejsu API lub zainstalować ją bezpośrednio za pomocą NuGet.

PM> Install-Package Aspose.Zip

Scal wiele plików ZIP w C#

Rozpocznijmy naszą podróż łączenia archiwów w formacie ZIP. Weźmiemy dwa archiwa ZIP i zbierzemy ich wpisy w jednym pliku ZIP. Poniżej przedstawiono kroki scalania wielu plików ZIP w języku C#.

Poniższy przykładowy kod pokazuje, jak scalić dwa pliki ZIP w języku C#.

// Załaduj źródłowe archiwum ZIP
using (Archive sourceArchive = new Archive("Archives/SourceArchive.zip"))
{
    // Załaduj docelowe archiwum ZIP
    using (Archive destArchive = new Archive("Archives/DestinationArchive.zip"))
    {
        // Iteruj po wpisach
        foreach (ArchiveEntry entry in sourceArchive.Entries)
        {
            // Sprawdź, czy wpis nie jest katalogiem. Wpisy będące katalogami są pomijane, ale ich pliki są dodawane z zachowaniem względnych ścieżek.
            if (!entry.IsDirectory)
            {
                // Załaduj wpis do strumienia pamięci
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Dodaj wpis do docelowego kodu ZIP
                destArchive.CreateEntry(entry.Name, mem);
            } 
        }

        // Zapisz scalone archiwum oddzielnie
        destArchive.Save("Archives/merged-archive.zip");
    }
}

Połącz wiele plików TAR w C#

Sprawdźmy teraz, jak scalić wiele archiwów TAR w języku C#. Poniżej przedstawiono kroki, aby to osiągnąć.

Poniższy przykładowy kod pokazuje, jak scalić wiele plików TAR w języku C#.

// Załaduj źródłowe archiwum TAR
using (TarArchive sourceArchive = new TarArchive("Archives/SourceArchive.tar"))
{
    // Załaduj docelowe archiwum TAR
    using (TarArchive destArchive = new TarArchive("Archives/DestinationArchive.tar"))
    {
        // Iteruj po wpisach
        foreach (TarEntry entry in sourceArchive.Entries)
        {
            // Sprawdź, czy wpis nie jest katalogiem. Wpisy będące katalogami są pomijane, ale ich pliki są dodawane z zachowaniem względnych ścieżek.
            if (!entry.IsDirectory)
            {
                // Załaduj wpis do strumienia pamięci
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Dodaj wpis do docelowego TAR
                destArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Zapisz scalone archiwum oddzielnie
        destArchive.Save("Archives/merged-archive.tar");
    }
}

Połącz ZIP z TAR w C#

W tej sekcji zobaczymy, jak scalić plik ZIP z archiwum TAR w języku C#. Poniżej przedstawiono kroki, aby wykonać tę operację.

Poniższy przykładowy kod pokazuje, jak scalić archiwum ZIP w TAR.

// Załaduj źródłowe archiwum ZIP
using (Archive zipArchive = new Archive("Archives/SourceArchive.zip"))
{
    // Załaduj docelowe archiwum TAR
    using (TarArchive tarArchive = new TarArchive("Archives/DestinationArchive.tar"))
    {
        // Iteruj po wpisach
        foreach (ArchiveEntry entry in zipArchive.Entries)
        {
            // Sprawdź, czy wpis nie jest katalogiem. Wpisy będące katalogami są pomijane, ale ich pliki są dodawane z zachowaniem względnych ścieżek.
            if (!entry.IsDirectory)
            {
                // Załaduj wpis do strumienia pamięci
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Dodaj wpis do docelowego TAR
                tarArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Zapisz scalone archiwum oddzielnie
        tarArchive.Save("Archives/merged-archive.tar");
    }
}

Połącz TAR z ZIP w C#

Podobnie jak w poprzednim przykładzie, możesz scalić plik TAR w ZIP. Poniższy przykładowy kod pokazuje, jak wyodrębnić pliki z TAR i scalić je w ZIP.

// Załaduj archiwum TAR
using (TarArchive tarArchive = new TarArchive("Archives/SourceArchive.tar"))
{
    // Załaduj archiwum ZIP
    using (Archive zipArchive = new Archive("Archives/DestinationArchive.zip"))
    {
        // Iteruj po wpisach
        foreach (TarEntry entry in tarArchive.Entries)
        {
            // Sprawdź, czy wpis nie jest katalogiem. Wpisy będące katalogami są pomijane, ale ich pliki są dodawane z zachowaniem względnych ścieżek.
            if (!entry.IsDirectory)
            {
                // Załaduj wpis do strumienia pamięci
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Dodaj wpis do ZIP
                zipArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Zapisz scalone archiwum oddzielnie
        zipArchive.Save("Archives/merged-archive.zip");
    }
}

Uzyskaj bezpłatną licencję API

Możesz używać Aspose.ZIP for .NET bez ograniczeń ewaluacyjnych, otrzymując bezpłatną licencję tymczasową.

Wniosek

W tym artykule nauczyłeś się, jak programowo scalać wiele archiwów ZIP lub TAR w języku C#. W szczególności omówiliśmy, jak dynamicznie łączyć pliki ZIP, pliki TAR, ZIP w TAR i TAR w ZIP. Aby dowiedzieć się więcej o Aspose.ZIP for .NET, możesz odwiedzić dokumentację. Możesz również zamieścić swoje zapytania na naszym forum.

Zobacz też