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# API do scalania plików ZIP i TAR
- Scal wiele plików ZIP w C#
- Połącz wiele plików TAR w C#
- Połącz ZIP z TAR w C#
- Połącz TAR z ZIP w C#
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#.
- Załaduj pierwszy plik ZIP, używając klasy Archive.
- Podobnie załaduj drugi plik ZIP, używając klasy Archive.
- Teraz przejrzyj wpisy pierwszego ZIP-a, korzystając z kolekcji Archive.Entries.
- Skopiuj każdy element ArchiveEntry do obiektu MemoryStream przy użyciu metody ArchiveEntry.Open().CopyTo(MemoryStream).
- Dodaj wpis do drugiego ZIP-a metodą Archive.CreateEntry(string, MemoryStream).
- Zapisz scalony plik ZIP jako osobny plik, używając metody Archive.Save(string).
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ąć.
- Załaduj pierwszy plik TAR przy użyciu klasy TarArchive.
- Podobnie załaduj drugi plik TAR, używając klasy TarArchive.
- Teraz przejrzyj wpisy pierwszego TAR-a, używając kolekcji TarArchive.Entries.
- Skopiuj każdy element TarEntry do obiektu MemoryStream przy użyciu metody TarEntry.Open().CopyTo(MemoryStream).
- Dodaj wpis do drugiego TAR-a metodą TarArchive.CreateEntry(string, MemoryStream).
- Zapisz scalony plik TAR przy użyciu metody TarArchive.Save(string).
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ę.
- Załaduj plik ZIP, używając klasy Archive.
- Załaduj plik TAR przy użyciu klasy TarArchive.
- Teraz przejrzyj wpisy ZIP, używając kolekcji Archive.Entries.
- Skopiuj każdy element ArchiveEntry do obiektu MemoryStream przy użyciu metody ArchiveEntry.Open().CopyTo(MemoryStream).
- Dodaj wpis do TAR przy użyciu metody TarArchive.CreateEntry(string, MemoryStream).
- Zapisz plik TAR przy użyciu metody TarArchive.Save(string).
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.