При работе с архивами из приложений .NET вам может понадобиться объединить несколько файлов ZIP или TAR. Например, вы можете извлечь файлы и папки из нескольких архивов и поместить их в один архив. Для этого в этой статье рассказывается, как объединить несколько файлов ZIP или TAR в C#. Мы рассмотрим объединение ZIP в ZIP, TAR в TAR, ZIP в TAR и TAR в ZIP.
- C# API для объединения файлов ZIP и TAR
- Объединение нескольких ZIP-файлов в C#
- Объединение нескольких файлов TAR в C#
- Объединить ZIP с TAR в C#
- Объединить TAR с ZIP в C#
C# .NET API для слияния файлов ZIP и TAR
Чтобы объединить несколько архивов ZIP и TAR, мы будем использовать Aspose.ZIP для .NET. Это многофункциональный .NET API, который позволяет создавать различные популярные форматы архивов и управлять ими. Вы можете либо скачать библиотеку DLL API, либо установить ее напрямую с помощью NuGet.
PM> Install-Package Aspose.Zip
Объединение нескольких ZIP-файлов в C#
Давайте начнем наше путешествие по объединению архивов в формате ZIP. Мы возьмем два ZIP-архива и соберем их записи в один ZIP-файл. Ниже приведены шаги для объединения нескольких ZIP-файлов в C#.
- Загрузите первый ZIP-файл, используя класс Архив.
- Аналогичным образом загрузите второй ZIP-файл, используя класс Архив.
- Теперь прокрутите записи первого ZIP-архива, используя коллекцию Archive.Entries.
- Скопируйте каждый ArchiveEntry в объект MemoryStream с помощью метода ArchiveEntry.Open().CopyTo(MemoryStream).
- Добавьте запись во второй ZIP, используя метод Archive.CreateEntry(string, MemoryStream).
- Сохраните объединенный ZIP-файл как отдельный файл, используя метод Archive.Save(string).
В следующем примере кода показано, как объединить два ZIP-файла в C#.
// Загрузите исходный ZIP-архив
using (Archive sourceArchive = new Archive("Archives/SourceArchive.zip"))
{
// Загрузить целевой ZIP-архив
using (Archive destArchive = new Archive("Archives/DestinationArchive.zip"))
{
// Итерация по записям
foreach (ArchiveEntry entry in sourceArchive.Entries)
{
// Убедитесь, что запись не является каталогом. Записи, являющиеся каталогами, пропускаются, но их файлы добавляются с учетом относительных путей.
if (!entry.IsDirectory)
{
// Загрузить запись в поток памяти
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Добавить запись в целевой ZIP
destArchive.CreateEntry(entry.Name, mem);
}
}
// Сохранить объединенный архив отдельно
destArchive.Save("Archives/merged-archive.zip");
}
}
Объединение нескольких файлов TAR в C#
Давайте теперь посмотрим, как объединить несколько архивов TAR в C#. Ниже приведены шаги для достижения этого.
- Загрузите первый файл TAR, используя класс TarArchive.
- Точно так же загрузите второй файл TAR, используя класс TarArchive.
- Теперь прокрутите записи первого TAR, используя коллекцию TarArchive.Entries.
- Скопируйте каждый TarEntry в объект MemoryStream, используя метод TarEntry.Open().CopyTo(MemoryStream).
- Добавьте запись во второй TAR, используя метод TarArchive.CreateEntry(string, MemoryStream).
- Сохраните объединенный TAR, используя метод TarArchive.Save(string).
В следующем примере кода показано, как объединить несколько файлов TAR в C#.
// Загрузите исходный архив TAR
using (TarArchive sourceArchive = new TarArchive("Archives/SourceArchive.tar"))
{
// Загрузить целевой TAR-архив
using (TarArchive destArchive = new TarArchive("Archives/DestinationArchive.tar"))
{
// Итерация по записям
foreach (TarEntry entry in sourceArchive.Entries)
{
// Убедитесь, что запись не является каталогом. Записи, являющиеся каталогами, пропускаются, но их файлы добавляются с учетом относительных путей.
if (!entry.IsDirectory)
{
// Загрузить запись в поток памяти
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Добавить запись в целевой TAR
destArchive.CreateEntry(entry.Name, mem);
}
}
// Сохранить объединенный архив отдельно
destArchive.Save("Archives/merged-archive.tar");
}
}
Объединить ZIP в TAR на C#
В этом разделе мы увидим, как объединить ZIP-файл в архив TAR на C#. Ниже приведены шаги для выполнения этой операции.
- Загрузите ZIP-файл, используя класс Архив.
- Загрузите файл TAR, используя класс TarArchive.
- Теперь прокрутите записи ZIP, используя коллекцию Archive.Entries.
- Скопируйте каждый ArchiveEntry в объект MemoryStream с помощью метода ArchiveEntry.Open().CopyTo(MemoryStream).
- Добавьте запись в TAR, используя метод TarArchive.CreateEntry(string, MemoryStream).
- Сохраните файл TAR, используя метод TarArchive.Save(string).
В следующем примере кода показано, как объединить ZIP-архив в TAR.
// Загрузите исходный ZIP-архив
using (Archive zipArchive = new Archive("Archives/SourceArchive.zip"))
{
// Загрузить целевой TAR-архив
using (TarArchive tarArchive = new TarArchive("Archives/DestinationArchive.tar"))
{
// Итерация по записям
foreach (ArchiveEntry entry in zipArchive.Entries)
{
// Убедитесь, что запись не является каталогом. Записи, являющиеся каталогами, пропускаются, но их файлы добавляются с учетом относительных путей.
if (!entry.IsDirectory)
{
// Загрузить запись в поток памяти
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Добавить запись в целевой TAR
tarArchive.CreateEntry(entry.Name, mem);
}
}
// Сохранить объединенный архив отдельно
tarArchive.Save("Archives/merged-archive.tar");
}
}
Объединить TAR с ZIP в C#
Как и в предыдущем примере, вы можете объединить файл TAR в ZIP. В следующем примере кода показано, как извлечь файлы из TAR и объединить их в ZIP.
// Загрузить TAR-архив
using (TarArchive tarArchive = new TarArchive("Archives/SourceArchive.tar"))
{
// Загрузить ZIP-архив
using (Archive zipArchive = new Archive("Archives/DestinationArchive.zip"))
{
// Итерация по записям
foreach (TarEntry entry in tarArchive.Entries)
{
// Убедитесь, что запись не является каталогом. Записи, являющиеся каталогами, пропускаются, но их файлы добавляются с учетом относительных путей.
if (!entry.IsDirectory)
{
// Загрузить запись в поток памяти
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Добавить запись в ZIP
zipArchive.CreateEntry(entry.Name, mem);
}
}
// Сохранить объединенный архив отдельно
zipArchive.Save("Archives/merged-archive.zip");
}
}
Получите бесплатную лицензию API
Вы можете использовать Aspose.ZIP для .NET без оценочных ограничений, получив бесплатную временную лицензию.
Вывод
В этой статье вы узнали, как программно объединить несколько архивов ZIP или TAR на C#. В частности, мы рассмотрели, как динамически объединять файлы ZIP, файлы TAR, ZIP в TAR и TAR в ZIP. Чтобы узнать больше об Aspose.ZIP для .NET, посетите документацию. Кроме того, вы можете оставлять свои вопросы на нашем форуме.