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# API för att slå samman ZIP- och TAR-filer
- Slå samman flera ZIP-filer i C#
- Slå samman flera TAR-filer i C#
- Kombinera ZIP med TAR i C#
- Kombinera TAR med ZIP i C#
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#.
- Ladda den första ZIP-filen med klassen Arkiv.
- På samma sätt laddar du den andra ZIP-filen med klassen Arkiv.
- Gå nu igenom posterna i första ZIP med Archive.Entries-samlingen.
- Kopiera varje ArchiveEntry till ett MemoryStream-objekt med metoden ArchiveEntry.Open().CopyTo(MemoryStream).
- Lägg till posten till andra ZIP med hjälp av metoden Archive.CreateEntry(string, MemoryStream).
- Spara den sammanslagna ZIP-filen som en separat fil med metoden Archive.Save(string).
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.
- Ladda den första TAR-filen med klassen TarArchive.
- På samma sätt laddar du den andra TAR-filen med klassen TarArchive.
- Gå nu igenom posterna i första TAR med TarArchive.Entries-samlingen.
- Kopiera varje TarEntry till ett MemoryStream-objekt med metoden TarEntry.Open().CopyTo(MemoryStream).
- Lägg till post till andra TAR med metoden TarArchive.CreateEntry(string, MemoryStream).
- Spara den sammanslagna TAR med metoden TarArchive.Save(string).
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.
- Ladda ZIP-filen med klassen Arkiv.
- Ladda TAR-fil med klassen TarArchive.
- Gå nu igenom posterna i ZIP med Archive.Entries-samlingen.
- Kopiera varje ArchiveEntry till ett MemoryStream-objekt med metoden ArchiveEntry.Open().CopyTo(MemoryStream).
- Lägg till post i TAR med metoden TarArchive.CreateEntry(string, MemoryStream).
- Spara TAR-filen med metoden TarArchive.Save(string).
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.