Como compactar arquivos em uma pasta usando C#
Arquivos ZIP são arquivos que contêm um ou mais arquivos ou pastas comprimidos usando o formato ZIP. É uma forma comum de comprimir e arquivar múltiplos arquivos ou pastas em um único arquivo. Eles podem reduzir o tamanho dos dados, economizar espaço em disco e facilitar a transferência de arquivos pela internet. Neste artigo, você aprenderá como trabalhar com arquivos ZIP em C# usando a biblioteca IronZIP. Você verá como criar, ler, extrair e atualizar arquivos ZIP programaticamente, bem como como usar vários recursos do IronZIP, como criptografia, proteção por senha e níveis de compressão. Ao final deste artigo, você será capaz de usar o IronZIP para lidar com arquivos ZIP em suas aplicações C# com facilidade.
O que Vamos Cobrir neste Artigo
- Instalar IronZIP em nosso Projeto
- Criar um arquivo ZIP
- Criar arquivo ZIP Protegido por Senha
- Extrair arquivo ZIP
- Extrair Arquivo ZIP Protegido por Senha
- Acessar Arquivo ZIP Existente
O que é IronZip?
IronZIP é uma poderosa e versátil biblioteca C# de arquivos ZIP que permite criar, ler e extrair arquivos ZIP programaticamente. Ela suporta vários formatos de arquivo, como ZIP, TAR, GZIP e BZIP2. Também suporta proteção por senha, criptografia e níveis de compressão. IronZIP é compatível com .NET 8, 7, 6, Core, Standard e Framework.
IronZIP pode ajudá-lo a lidar com vários casos de uso e benefícios de trabalhar com arquivos ZIP, como:
- Criando um sistema de backup: Você pode usar o IronZIP para comprimir e criptografar seus arquivos e pastas importantes em um arquivo ZIP e armazená-los em um local seguro. Desta forma, você pode economizar espaço em disco e proteger seus dados contra acesso não autorizado.
- Enviando anexos de email: Você pode usar o IronZIP para reduzir o tamanho dos seus anexos de email, compactando-os em um arquivo ZIP. Isso pode ajudá-lo a evitar exceder o limite de tamanho de arquivo e acelerar o processo de transmissão.
- Baixar arquivos da web: Você pode usar o IronZIP para baixar e extrair arquivos ZIP da web, como pacotes de software, documentos, imagens e outros tipos de arquivos. Isso pode ajudá-lo a economizar largura de banda e tempo e acessar os arquivos de que precisa com facilidade.
Começando com o IronZIP
Antes de escrever o código, você precisa instalar o pacote NuGet IronZIP em seu projeto C#. IronZIP é uma biblioteca de compressão popular disponível via NuGet.
Instalando a Biblioteca IronZIP
Para instalar o IronZIP, você pode usar o Console do Gerenciador de Pacotes NuGet no Visual Studio. Basta executar o seguinte comando:
Install-Package IronZip
Alternativamente, você pode baixar o pacote diretamente do site oficial do IronZIP. Uma vez instalado, você pode começar adicionando o seguinte namespace no topo do seu código C#.
using IronZip;
using IronZip;
Imports IronZip
Criando Arquivos ZIP C# em uma Pasta
Você pode facilmente criar arquivos ZIP em uma pasta usando o IronZIP. O código a seguir compactará todos os arquivos do diretório especificado.
using System;
using System.IO;
using IronZip;
class Program
{
static void Main(string[] args)
{
// Get all files from the specified directory
string[] fileArray = Directory.GetFiles(@"D:\Docs\");
// Create a new ZIP archive
using (var archive = new IronZipArchive())
{
// Iterate through each file and add it to the archive
foreach (var file in fileArray)
{
archive.Add(file); // Add files to the ZIP
}
// Save the archive to a file
archive.SaveAs("myZipFile.zip");
}
}
}
using System;
using System.IO;
using IronZip;
class Program
{
static void Main(string[] args)
{
// Get all files from the specified directory
string[] fileArray = Directory.GetFiles(@"D:\Docs\");
// Create a new ZIP archive
using (var archive = new IronZipArchive())
{
// Iterate through each file and add it to the archive
foreach (var file in fileArray)
{
archive.Add(file); // Add files to the ZIP
}
// Save the archive to a file
archive.SaveAs("myZipFile.zip");
}
}
}
Imports System
Imports System.IO
Imports IronZip
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Get all files from the specified directory
Dim fileArray() As String = Directory.GetFiles("D:\Docs\")
' Create a new ZIP archive
Using archive = New IronZipArchive()
' Iterate through each file and add it to the archive
For Each file In fileArray
archive.Add(file) ' Add files to the ZIP
Next file
' Save the archive to a file
archive.SaveAs("myZipFile.zip")
End Using
End Sub
End Class
O código C# acima usa a biblioteca IronZIP para comprimir todos os arquivos em um único arquivo ZIP. O código faz o seguinte:
- Declara um array de strings chamado
fileArraye atribui o resultado do métodoDirectory.GetFiles, passando o caminho do diretório ("D:\Docs") como parâmetro. Este método retorna um array de strings contendo os nomes completos de todos os arquivos no diretório especificado. - Cria uma nova instância da classe
IronZipArchive, que representa um arquivo ZIP na memória. A instância é atribuída a uma variável chamadaarchivee está envolvida em uma instruçãousing, que garante que o arquivo ZIP seja descartado quando o bloco de código terminar. - Itera sobre o array
fileArrayusando um loopforeach, e para cada arquivo, chama o métodoAdddo objetoarchive, passando o nome do arquivo como parâmetro. Este método adiciona uma nova entrada ao arquivo ZIP, com o mesmo nome e conteúdo do arquivo. - Chama o método
SaveAsdo objetoarchive, passando o nome do arquivo ZIP ("myZipFile.zip") como parâmetro. Este método salva o arquivo ZIP para um arquivo no sistema de arquivos atual.
Desta forma, você pode criar novos arquivos ZIP facilmente usando apenas algumas linhas de código.
Saída
A saída é a seguinte:

Criar um arquivo ZIP protegido por senha
IronZIP fornece um método fácil para criar arquivos ZIP protegidos por senha. O seguinte exemplo de código irá comprimir arquivos e criar um novo arquivo ZIP com uma senha.
using System;
using System.IO;
using IronZip;
class Program
{
static void Main(string[] args)
{
// Get all files from the specified directory
string[] fileArray = Directory.GetFiles(@"D:\Docs\");
// Create a new ZIP archive
using (var archive = new IronZipArchive())
{
// Iterate through each file and add it to the archive
foreach (var file in fileArray)
{
archive.Add(file); // Add files to the ZIP
}
// Set Password and Encryption Method
archive.Encrypt("myPa55word", EncryptionMethods.AES256);
// Save the archive to a file
archive.SaveAs("myZipFile.zip");
}
}
}
using System;
using System.IO;
using IronZip;
class Program
{
static void Main(string[] args)
{
// Get all files from the specified directory
string[] fileArray = Directory.GetFiles(@"D:\Docs\");
// Create a new ZIP archive
using (var archive = new IronZipArchive())
{
// Iterate through each file and add it to the archive
foreach (var file in fileArray)
{
archive.Add(file); // Add files to the ZIP
}
// Set Password and Encryption Method
archive.Encrypt("myPa55word", EncryptionMethods.AES256);
// Save the archive to a file
archive.SaveAs("myZipFile.zip");
}
}
}
Imports System
Imports System.IO
Imports IronZip
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Get all files from the specified directory
Dim fileArray() As String = Directory.GetFiles("D:\Docs\")
' Create a new ZIP archive
Using archive = New IronZipArchive()
' Iterate through each file and add it to the archive
For Each file In fileArray
archive.Add(file) ' Add files to the ZIP
Next file
' Set Password and Encryption Method
archive.Encrypt("myPa55word", EncryptionMethods.AES256)
' Save the archive to a file
archive.SaveAs("myZipFile.zip")
End Using
End Sub
End Class
A linha archive.Encrypt("myPa55word", EncryptionMethods.AES256); define uma senha ("myPa55word") para um arquivo ZIP usando o IronZIP. Isso aumenta a segurança aplicando criptografia AES-256 no arquivo, garantindo que apenas usuários com a senha correta possam acessar seu conteúdo. Este recurso é valioso para proteger dados sensíveis durante o armazenamento ou transferência dentro de aplicativos C#. Você precisa passar o modo especificado do algoritmo de criptografia no segundo parâmetro.
O arquivo é criptografado como mostrado abaixo.
Saída

Vimos a demonstração de criação de um arquivo ZIP ao percorrer os diretórios a partir do caminho especificado. Agora, vamos seguir para o exemplo de descompactar arquivos.
Extraindo arquivos de um arquivo ZIP
IronZIP fornece um método para extrair arquivos de um arquivo ZIP em C#. O seguinte exemplo de código irá extrair o arquivo compactado dentro de um arquivo ZIP.
using IronZip;
class Program
{
static void Main(string[] args)
{
// Extract all files from the ZIP archive to the specified directory
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles");
}
}
using IronZip;
class Program
{
static void Main(string[] args)
{
// Extract all files from the ZIP archive to the specified directory
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles");
}
}
Imports IronZip
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Extract all files from the ZIP archive to the specified directory
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles")
End Sub
End Class
O código IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles"); usa o IronZIP para extrair todos os arquivos de "myZipFile.zip" e os coloca no diretório "myExtractedFiles". Este método conciso simplifica o processo de extração de arquivos ZIP em C#, fornecendo uma solução conveniente para tarefas de extração de arquivos.
Saída
A saída é a seguinte:

Como extrair de um arquivo ZIP protegido por senha
IronZIP também fornece um método para extrair arquivos ZIP protegidos por senha. O seguinte código usará o método IronZIP para extrair todos os arquivos e diretórios existentes do arquivo ZIP especificado.
using IronZip;
class Program
{
static void Main(string[] args)
{
// Extract all files from the password-protected ZIP archive to the specified directory
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word");
}
}
using IronZip;
class Program
{
static void Main(string[] args)
{
// Extract all files from the password-protected ZIP archive to the specified directory
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word");
}
}
Imports IronZip
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Extract all files from the password-protected ZIP archive to the specified directory
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word")
End Sub
End Class
O método ExtractArchiveToDirectory da classe IronZipArchive extrai todas as entradas de um arquivo ZIP para um diretório especificado. Ele passa três argumentos para o método: o caminho do arquivo ZIP ("myZipFile.zip"), o caminho do diretório de destino ("myExtractedFiles") e a senha do arquivo ZIP ("myPa55word").
Desta forma, você pode facilmente extrair arquivos ZIP protegidos por senha.
Como acessar um arquivo existente
IronZIP fornece métodos para acessar o arquivo existente e visualizar todas as entradas presentes no arquivo.
using System;
using System.Collections.Generic;
using IronZip;
class Program
{
static void Main(string[] args)
{
// Open an existing ZIP archive with a password
using (var archive = new IronZipArchive("myZipFile.zip", "myPa55word"))
{
// Get entries list
List<string> names = archive.GetArchiveEntryNames();
// Iterate through each entry name and print it
foreach (string name in names)
{
Console.WriteLine(name);
}
}
}
}
using System;
using System.Collections.Generic;
using IronZip;
class Program
{
static void Main(string[] args)
{
// Open an existing ZIP archive with a password
using (var archive = new IronZipArchive("myZipFile.zip", "myPa55word"))
{
// Get entries list
List<string> names = archive.GetArchiveEntryNames();
// Iterate through each entry name and print it
foreach (string name in names)
{
Console.WriteLine(name);
}
}
}
}
Imports System
Imports System.Collections.Generic
Imports IronZip
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Open an existing ZIP archive with a password
Using archive = New IronZipArchive("myZipFile.zip", "myPa55word")
' Get entries list
Dim names As List(Of String) = archive.GetArchiveEntryNames()
' Iterate through each entry name and print it
For Each name As String In names
Console.WriteLine(name)
Next name
End Using
End Sub
End Class
O código C# fornecido usa o IronZIP para criar uma instância IronZipArchive segura, carregando um arquivo ZIP chamado "myZipFile.zip" com a senha "myPa55word". Não passe o parâmetro da senha se o arquivo não estiver criptografado. Em seguida, ele recupera e imprime a lista de nomes de entradas (nomes de arquivos e pastas) dentro do arquivo ZIP criptografado.
O método GetArchiveEntryNames coleta os nomes das entradas, e um loop foreach exibe cada nome no console. Isso demonstra como o IronZIP permite o acesso seguro e a recuperação de informações de entradas de arquivos ZIP protegidos por senha de maneira concisa.
Saída

Conclusão
Em conclusão, o IronZIP prova ser uma biblioteca C# robusta e versátil para trabalhar com arquivos ZIP. Seus recursos se estendem além da compressão e extração básicas, oferecendo funcionalidades como proteção por senha, criptografia e compatibilidade com vários formatos de arquivo. Seja criando sistemas de backup, gerenciando anexos de e-mail ou baixando arquivos da web, o IronZIP simplifica essas tarefas com simplicidade e eficiência.
Ao integrar o IronZIP em seus aplicativos C#, você obtém uma ferramenta poderosa para lidar com arquivos ZIP, aumentar a segurança dos dados e otimizar processos de transferência de arquivos. Você pode se beneficiar de um teste gratuito conforme necessário.
Perguntas frequentes
Como posso criar um arquivo ZIP a partir de uma pasta em C#?
Você pode usar o IronZIP para criar um arquivo ZIP a partir de uma pasta, iterando pelos arquivos no diretório e adicionando-os a um novo arquivo ZIP. Use a classe IronZipArchive e chame o método SaveAs para salvar o arquivo ZIP.
Como faço para instalar o IronZIP em um projeto C#?
Instale o IronZIP em seu projeto C# usando o Gerenciador de Pacotes NuGet no Visual Studio. Execute o comando Install-Package IronZip no Console do Gerenciador de Pacotes ou faça o download do site oficial do IronZIP.
Quais formatos o IronZIP suporta para manipulação de arquivos ZIP?
O IronZIP suporta vários formatos de arquivo, incluindo ZIP, TAR, GZIP e BZIP2, oferecendo flexibilidade para diferentes necessidades de compressão e arquivamento.
Posso criptografar arquivos ZIP criados em C#?
Sim, você pode criptografar arquivos ZIP usando o IronZIP, aplicando o método Encrypt com AES-256 para proteger seus dados dentro do arquivo.
Como posso extrair arquivos de um arquivo ZIP em C#?
Para extrair arquivos de um arquivo ZIP usando o IronZIP, utilize o método ExtractArchiveToDirectory , especificando o arquivo ZIP de origem e o diretório de destino.
É possível manipular arquivos ZIP protegidos por senha em C#?
Sim, você pode lidar com arquivos ZIP protegidos por senha usando o IronZIP, fornecendo a senha ao usar métodos como ExtractArchiveToDirectory para acessar o conteúdo com segurança.
Quais são as vantagens de usar o IronZIP para gerenciar arquivos ZIP?
O IronZIP simplifica tarefas como backup de arquivos, gerenciamento de anexos de e-mail e downloads da web, oferecendo recursos como criptografia, proteção por senha e suporte a vários formatos de arquivo compactado.
O IronZIP é compatível com o .NET 8 e outras versões?
O IronZIP é compatível com .NET 8, 7, 6, Core, Standard e Framework, o que o torna flexível para integração em diversos projetos C#.
Como os desenvolvedores podem acessar uma versão de avaliação do IronZIP?
Os desenvolvedores podem acessar uma versão de avaliação gratuita do IronZIP visitando a seção de licenciamento ou download do site do IronZIP para avaliar seus recursos.
Qual a vantagem de usar arquivos ZIP para transferência de dados?
Os arquivos ZIP são vantajosos para a transferência de dados, pois reduzem o tamanho dos arquivos, economizam espaço em disco e facilitam o envio eficiente de vários arquivos pela internet.




