Slå samman flera ZIP- eller TAR-arkiv i C#

När du arbetar med arkiv från dina .NET-applikationer kan du behöva slå ihop flera ZIP- eller TAR-filer. Till exempel kanske du vill extrahera filer och mappar från flera arkiv och lägga dem i ett enda arkiv. För att uppnå det tar den här artikeln upp hur man slår ihop flera ZIP- eller TAR-filer i C#. Vi kommer att täcka sammanslagning av ZIP till ZIP, TAR till TAR, ZIP till TAR och TAR till ZIP.

C# .NET API för att slå samman ZIP- och TAR-filer

För att slå samman flera ZIP- och TAR-arkiv kommer vi att använda Aspose.ZIP för .NET. Det är ett funktionsrikt .NET API som låter dig skapa och manipulera olika populära arkivformat. Du kan antingen ladda ner API:s DLL eller installera den direkt med NuGet.

PM> Install-Package Aspose.Zip

Slå samman flera ZIP-filer i C#

Låt oss börja vår resa med att slå samman arkiv med ZIP-format. Vi tar två ZIP-arkiv och samlar deras poster i en enda ZIP-fil. Följande är stegen för att slå samman flera ZIP-filer i C#.

Följande kodexempel visar hur man slår samman två ZIP-filer i C#.

// Ladda källzip-arkivet
using (Archive sourceArchive = new Archive("Archives/SourceArchive.zip"))
{
    // Ladda destinations ZIP-arkiv
    using (Archive destArchive = new Archive("Archives/DestinationArchive.zip"))
    {
        // Iterera över posterna
        foreach (ArchiveEntry entry in sourceArchive.Entries)
        {
            // Kontrollera att posten inte är en katalog. Poster som är kataloger hoppas över, men deras filer läggs till med respekt för relativa sökvägar.
            if (!entry.IsDirectory)
            {
                // Ladda posten till minnesströmmen
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Lägg till post till destinations-zip
                destArchive.CreateEntry(entry.Name, mem);
            } 
        }

        // Spara sammanslagna arkiv separat
        destArchive.Save("Archives/merged-archive.zip");
    }
}

Slå samman flera TAR-filer i C#

Låt oss nu kolla in hur man slår samman flera TAR-arkiv i C#. Följande är stegen för att uppnå detta.

Följande kodexempel visar hur man slår ihop flera TAR-filer i C#.

// Ladda käll-TAR-arkivet
using (TarArchive sourceArchive = new TarArchive("Archives/SourceArchive.tar"))
{
    // Ladda destinationens TAR-arkiv
    using (TarArchive destArchive = new TarArchive("Archives/DestinationArchive.tar"))
    {
        // Iterera över posterna
        foreach (TarEntry entry in sourceArchive.Entries)
        {
            // Kontrollera att posten inte är en katalog. Poster som är kataloger hoppas över, men deras filer läggs till med respekt för relativa sökvägar.
            if (!entry.IsDirectory)
            {
                // Ladda posten till minnesströmmen
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Lägg till inmatning till destinationens TAR
                destArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Spara sammanslagna arkiv separat
        destArchive.Save("Archives/merged-archive.tar");
    }
}

Slå samman ZIP till TAR i C#

I det här avsnittet kommer vi att se hur man slår samman en ZIP-fil till TAR-arkivet i C#. Följande är stegen för att utföra denna operation.

Följande kodexempel visar hur man slår samman ett ZIP-arkiv till TAR.

// Ladda källzip-arkivet
using (Archive zipArchive = new Archive("Archives/SourceArchive.zip"))
{
    // Ladda destinationens TAR-arkiv
    using (TarArchive tarArchive = new TarArchive("Archives/DestinationArchive.tar"))
    {
        // Iterera över posterna
        foreach (ArchiveEntry entry in zipArchive.Entries)
        {
            // Kontrollera att posten inte är en katalog. Poster som är kataloger hoppas över, men deras filer läggs till med respekt för relativa sökvägar.
            if (!entry.IsDirectory)
            {
                // Ladda posten till minnesströmmen
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Lägg till inmatning till destinationens TAR
                tarArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Spara sammanslagna arkiv separat
        tarArchive.Save("Archives/merged-archive.tar");
    }
}

Kombinera TAR med ZIP i C#

I likhet med föregående exempel kan du slå ihop en TAR-fil till ZIP. Följande kodexempel visar hur man extraherar filer från en TAR och slår samman dem till en ZIP.

// Ladda TAR-arkiv
using (TarArchive tarArchive = new TarArchive("Archives/SourceArchive.tar"))
{
    // Ladda ZIP-arkiv
    using (Archive zipArchive = new Archive("Archives/DestinationArchive.zip"))
    {
        // Iterera över posterna
        foreach (TarEntry entry in tarArchive.Entries)
        {
            // Kontrollera att posten inte är en katalog. Poster som är kataloger hoppas över, men deras filer läggs till med respekt för relativa sökvägar.
            if (!entry.IsDirectory)
            {
                // Ladda posten till minnesströmmen
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Lägg till post i ZIP
                zipArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Spara sammanslagna arkiv separat
        zipArchive.Save("Archives/merged-archive.zip");
    }
}

Skaffa en gratis API-licens

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

Slutsats

I den här artikeln har du lärt dig hur du sammanfogar flera ZIP- eller TAR-arkiv programmatiskt i C#. Vi har särskilt behandlat hur man slår samman ZIP-filer, TAR-filer, ZIP till TAR och TAR till ZIP dynamiskt. För att utforska mer om Aspose.ZIP för .NET kan du besöka dokumentationen. Du kan också skicka dina frågor till vårt forum.

Se även