Mientras trabaja con archivos desde sus aplicaciones .NET, es posible que deba fusionar varios archivos ZIP o TAR. Por ejemplo, es posible que desee extraer archivos y carpetas de varios archivos y colocarlos en un solo archivo. Para lograrlo, este artículo cubre cómo fusionar múltiples archivos ZIP o TAR en C#. Cubriremos la fusión de ZIP en ZIP, TAR en TAR, ZIP en TAR y TAR en ZIP.
- API de C# para fusionar archivos ZIP y TAR
- Combinar varios archivos ZIP en C#
- Combinar varios archivos TAR en C#
- Combinar ZIP con TAR en C#
- Combinar TAR con ZIP en C#
C# .NET API para fusionar archivos ZIP y TAR
Para fusionar varios archivos ZIP y TAR, aprovecharemos Aspose.ZIP for .NET. Es una API .NET rica en funciones que le permite crear y manipular varios formatos de archivo populares. Puede descargar la DLL de la API o instalarla directamente usando NuGet.
PM> Install-Package Aspose.Zip
Combinar varios archivos ZIP en C#
Comencemos nuestro viaje de fusionar archivos con formato ZIP. Tomaremos dos archivos ZIP y recopilaremos sus entradas en un solo archivo ZIP. Los siguientes son los pasos para combinar varios archivos ZIP en C#.
- Cargue el primer archivo ZIP usando la clase Archive.
- Del mismo modo, cargue el segundo archivo ZIP usando la clase Archive.
- Ahora, recorra las entradas del primer ZIP usando la colección Archive.Entries.
- Copie cada ArchiveEntry a un objeto MemoryStream usando el método ArchiveEntry.Open().CopyTo(MemoryStream).
- Agregue una entrada al segundo ZIP usando el método Archive.CreateEntry(string, MemoryStream).
- Guarde el ZIP fusionado como un archivo separado usando el método Archive.Save(string).
El siguiente ejemplo de código muestra cómo fusionar dos archivos ZIP en C#.
// Cargue el archivo ZIP de origen
using (Archive sourceArchive = new Archive("Archives/SourceArchive.zip"))
{
// Cargar archivo ZIP de destino
using (Archive destArchive = new Archive("Archives/DestinationArchive.zip"))
{
// Iterar sobre las entradas
foreach (ArchiveEntry entry in sourceArchive.Entries)
{
// Verifique que la entrada no sea un directorio. Las entradas que son directorios se omiten, pero sus archivos se agregan respetando las rutas relativas.
if (!entry.IsDirectory)
{
// Cargar entrada al flujo de memoria
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Agregar entrada al código postal de destino
destArchive.CreateEntry(entry.Name, mem);
}
}
// Guardar archivo combinado por separado
destArchive.Save("Archives/merged-archive.zip");
}
}
Combinar varios archivos TAR en C#
Veamos ahora cómo fusionar varios archivos TAR en C#. Los siguientes son los pasos para lograrlo.
- Cargue el primer archivo TAR usando la clase TarArchive.
- Del mismo modo, cargue el segundo archivo TAR usando la clase TarArchive.
- Ahora, recorra las entradas del primer TAR usando la colección TarArchive.Entries.
- Copie cada TarEntry a un objeto MemoryStream usando el método TarEntry.Open().CopyTo(MemoryStream).
- Agregue una entrada al segundo TAR usando el método TarArchive.CreateEntry(string, MemoryStream).
- Guarde el TAR combinado usando el método TarArchive.Save(string).
El siguiente ejemplo de código muestra cómo fusionar varios archivos TAR en C#.
// Cargue el archivo TAR de origen
using (TarArchive sourceArchive = new TarArchive("Archives/SourceArchive.tar"))
{
// Cargar archivo TAR de destino
using (TarArchive destArchive = new TarArchive("Archives/DestinationArchive.tar"))
{
// Iterar sobre las entradas
foreach (TarEntry entry in sourceArchive.Entries)
{
// Verifique que la entrada no sea un directorio. Las entradas que son directorios se omiten, pero sus archivos se agregan respetando las rutas relativas.
if (!entry.IsDirectory)
{
// Cargar entrada al flujo de memoria
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Agregar entrada al TAR de destino
destArchive.CreateEntry(entry.Name, mem);
}
}
// Guardar archivo combinado por separado
destArchive.Save("Archives/merged-archive.tar");
}
}
Combinar ZIP en TAR en C#
En esta sección, veremos cómo fusionar un archivo ZIP en un archivo TAR en C#. Los siguientes son los pasos para realizar esta operación.
- Cargue el archivo ZIP usando la clase Archive.
- Cargue el archivo TAR usando la clase TarArchive.
- Ahora, recorra las entradas de ZIP usando la colección Archive.Entries.
- Copie cada ArchiveEntry a un objeto MemoryStream usando el método ArchiveEntry.Open().CopyTo(MemoryStream).
- Agregue una entrada a TAR usando el método TarArchive.CreateEntry(string, MemoryStream).
- Guarde el archivo TAR usando el método TarArchive.Save(string).
El siguiente ejemplo de código muestra cómo fusionar un archivo ZIP en TAR.
// Cargue el archivo ZIP de origen
using (Archive zipArchive = new Archive("Archives/SourceArchive.zip"))
{
// Cargar archivo TAR de destino
using (TarArchive tarArchive = new TarArchive("Archives/DestinationArchive.tar"))
{
// Iterar sobre las entradas
foreach (ArchiveEntry entry in zipArchive.Entries)
{
// Verifique que la entrada no sea un directorio. Las entradas que son directorios se omiten, pero sus archivos se agregan respetando las rutas relativas.
if (!entry.IsDirectory)
{
// Cargar entrada al flujo de memoria
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Agregar entrada al TAR de destino
tarArchive.CreateEntry(entry.Name, mem);
}
}
// Guardar archivo combinado por separado
tarArchive.Save("Archives/merged-archive.tar");
}
}
Combinar TAR con ZIP en C#
Similar al ejemplo anterior, puede combinar un archivo TAR en ZIP. El siguiente ejemplo de código muestra cómo extraer archivos de un TAR y fusionarlos en un ZIP.
// Cargar archivo TAR
using (TarArchive tarArchive = new TarArchive("Archives/SourceArchive.tar"))
{
// Cargar archivo ZIP
using (Archive zipArchive = new Archive("Archives/DestinationArchive.zip"))
{
// Iterar sobre las entradas
foreach (TarEntry entry in tarArchive.Entries)
{
// Verifique que la entrada no sea un directorio. Las entradas que son directorios se omiten, pero sus archivos se agregan respetando las rutas relativas.
if (!entry.IsDirectory)
{
// Cargar entrada al flujo de memoria
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Agregar entrada a ZIP
zipArchive.CreateEntry(entry.Name, mem);
}
}
// Guardar archivo combinado por separado
zipArchive.Save("Archives/merged-archive.zip");
}
}
Obtenga una licencia de API gratuita
Puede usar Aspose.ZIP for .NET sin limitaciones de evaluación al obtener una licencia temporal gratuita.
Conclusión
En este artículo, ha aprendido a fusionar varios archivos ZIP o TAR mediante programación en C#. En particular, hemos cubierto cómo fusionar archivos ZIP, archivos TAR, ZIP en TAR y TAR en ZIP dinámicamente. Para explorar más sobre Aspose.ZIP for .NET, puede visitar la documentación. Además, puede publicar sus consultas en nuestro foro.