Ao trabalhar com arquivos de seus aplicativos .NET, você pode precisar mesclar vários arquivos ZIP ou TAR. Por exemplo, você pode querer extrair arquivos e pastas de vários arquivos e colocá-los em um único arquivo. Para conseguir isso, este artigo aborda como mesclar vários arquivos ZIP ou TAR em C#. Abordaremos a fusão de ZIP em ZIP, TAR em TAR, ZIP em TAR e TAR em ZIP.
- API C# para mesclar arquivos ZIP e TAR
- Mesclar vários arquivos ZIP em C#
- Mesclar vários arquivos TAR em C#
- Combine ZIP com TAR em C#
- Combine TAR com ZIP em C#
API C# .NET para mesclar arquivos ZIP e TAR
Para mesclar vários arquivos ZIP e TAR, usaremos o Aspose.ZIP para .NET. É uma API .NET rica em recursos que permite criar e manipular vários formatos de arquivo populares. Você pode baixar a DLL da API ou instalá-la diretamente usando NuGet.
PM> Install-Package Aspose.Zip
Mesclar vários arquivos ZIP em C#
Vamos começar nossa jornada de mesclagem de arquivos com o formato ZIP. Pegaremos dois arquivos ZIP e coletaremos suas entradas em um único arquivo ZIP. A seguir estão as etapas para mesclar vários arquivos ZIP em C#.
- Carregue o primeiro arquivo ZIP usando a classe Archive.
- Da mesma forma, carregue o segundo arquivo ZIP usando a classe Archive.
- Agora, percorra as entradas do primeiro ZIP usando a coleção Archive.Entries.
- Copie cada ArchiveEntry para um objeto MemoryStream usando o método ArchiveEntry.Open().CopyTo(MemoryStream).
- Adicione uma entrada ao segundo ZIP usando o método Archive.CreateEntry(string, MemoryStream).
- Salve o ZIP mesclado como um arquivo separado usando o método Archive.Save(string).
O exemplo de código a seguir mostra como mesclar dois arquivos ZIP em C#.
// Carregar o arquivo ZIP de origem
using (Archive sourceArchive = new Archive("Archives/SourceArchive.zip"))
{
// Carregar arquivo ZIP de destino
using (Archive destArchive = new Archive("Archives/DestinationArchive.zip"))
{
// Iterar sobre as entradas
foreach (ArchiveEntry entry in sourceArchive.Entries)
{
// Verifique se a entrada não é um diretório. As entradas que são diretórios são ignoradas, mas seus arquivos são adicionados respeitando os caminhos relativos.
if (!entry.IsDirectory)
{
// Carregar entrada no fluxo de memória
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Adicionar entrada ao CEP de destino
destArchive.CreateEntry(entry.Name, mem);
}
}
// Salvar o arquivo mesclado separadamente
destArchive.Save("Archives/merged-archive.zip");
}
}
Mesclar vários arquivos TAR em C#
Vamos agora verificar como mesclar vários arquivos TAR em C#. A seguir estão os passos para conseguir isso.
- Carregue o primeiro arquivo TAR usando a classe TarArchive.
- Da mesma forma, carregue o segundo arquivo TAR usando a classe TarArchive.
- Agora, percorra as entradas do primeiro TAR usando a coleção TarArchive.Entries.
- Copie cada TarEntry para um objeto MemoryStream usando o método TarEntry.Open().CopyTo(MemoryStream).
- Adicione a entrada ao segundo TAR usando o método TarArchive.CreateEntry(string, MemoryStream).
- Salve o TAR mesclado usando o método TarArchive.Save(string).
O exemplo de código a seguir mostra como mesclar vários arquivos TAR em C#.
// Carregar o arquivo TAR de origem
using (TarArchive sourceArchive = new TarArchive("Archives/SourceArchive.tar"))
{
// Carregar arquivo TAR de destino
using (TarArchive destArchive = new TarArchive("Archives/DestinationArchive.tar"))
{
// Iterar sobre as entradas
foreach (TarEntry entry in sourceArchive.Entries)
{
// Verifique se a entrada não é um diretório. As entradas que são diretórios são ignoradas, mas seus arquivos são adicionados respeitando os caminhos relativos.
if (!entry.IsDirectory)
{
// Carregar entrada no fluxo de memória
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Adicionar entrada ao TAR de destino
destArchive.CreateEntry(entry.Name, mem);
}
}
// Salvar o arquivo mesclado separadamente
destArchive.Save("Archives/merged-archive.tar");
}
}
Mesclar ZIP em TAR em C#
Nesta seção, veremos como mesclar um arquivo ZIP em um arquivo TAR em C#. A seguir estão as etapas para realizar esta operação.
- Carregue o arquivo ZIP usando a classe Arquivo.
- Carregue o arquivo TAR usando a classe TarArchive.
- Agora, percorra as entradas do ZIP usando a coleção Archive.Entries.
- Copie cada ArchiveEntry para um objeto MemoryStream usando o método ArchiveEntry.Open().CopyTo(MemoryStream).
- Adicionar entrada ao TAR usando o método TarArchive.CreateEntry(string, MemoryStream).
- Salve o arquivo TAR usando o método TarArchive.Save(string).
O exemplo de código a seguir mostra como mesclar um arquivo ZIP no TAR.
// Carregar o arquivo ZIP de origem
using (Archive zipArchive = new Archive("Archives/SourceArchive.zip"))
{
// Carregar arquivo TAR de destino
using (TarArchive tarArchive = new TarArchive("Archives/DestinationArchive.tar"))
{
// Iterar sobre as entradas
foreach (ArchiveEntry entry in zipArchive.Entries)
{
// Verifique se a entrada não é um diretório. As entradas que são diretórios são ignoradas, mas seus arquivos são adicionados respeitando os caminhos relativos.
if (!entry.IsDirectory)
{
// Carregar entrada no fluxo de memória
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Adicionar entrada ao TAR de destino
tarArchive.CreateEntry(entry.Name, mem);
}
}
// Salvar o arquivo mesclado separadamente
tarArchive.Save("Archives/merged-archive.tar");
}
}
Combine TAR com ZIP em C#
Semelhante ao exemplo anterior, você pode mesclar um arquivo TAR em ZIP. O exemplo de código a seguir mostra como extrair arquivos de um TAR e mesclá-los em um ZIP.
// Carregar arquivo TAR
using (TarArchive tarArchive = new TarArchive("Archives/SourceArchive.tar"))
{
// Carregar arquivo ZIP
using (Archive zipArchive = new Archive("Archives/DestinationArchive.zip"))
{
// Iterar sobre as entradas
foreach (TarEntry entry in tarArchive.Entries)
{
// Verifique se a entrada não é um diretório. As entradas que são diretórios são ignoradas, mas seus arquivos são adicionados respeitando os caminhos relativos.
if (!entry.IsDirectory)
{
// Carregar entrada no fluxo de memória
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Adicionar entrada ao ZIP
zipArchive.CreateEntry(entry.Name, mem);
}
}
// Salvar o arquivo mesclado separadamente
zipArchive.Save("Archives/merged-archive.zip");
}
}
Obtenha uma licença de API gratuita
Você pode usar o Aspose.ZIP para .NET sem limitações de avaliação obtendo uma licença temporária gratuita.
Conclusão
Neste artigo, você aprendeu como mesclar vários arquivos ZIP ou TAR programaticamente em C#. Particularmente, abordamos como mesclar arquivos ZIP, arquivos TAR, ZIP em TAR e TAR em ZIP dinamicamente. Para explorar mais sobre o Aspose.ZIP para .NET, você pode visitar a documentação. Além disso, você pode postar suas dúvidas em nosso fórum.