No post anterior, você aprendeu diferentes maneiras de compactar arquivos e pastas em arquivos ZIP usando Aspose.ZIP for .NET. Neste post, mostrarei como extrair ou descompactar arquivos em arquivos ZIP usando C#. Também abordaremos como extrair arquivos ZIP protegidos por senha ou criptografados por AES programaticamente. Este artigo está dividido nas seguintes seções:
- API C# para descompactar arquivos
- Descompacte arquivos em arquivos ZIP em C#
- Descompacte arquivos ZIP protegidos por senha
- Extraia arquivos ZIP criptografados AES em C#
API C# para descompactar arquivos
Antes de começarmos, certifique-se de ter baixado e referenciado o Aspose.ZIP para .NET ou instalado seu pacote usando NuGet Package Manager em seu projeto.
Descompacte arquivos ZIP usando C#
O processo de descompactação de arquivos ZIP pode ser feito de duas maneiras:
- Descompacte cada arquivo em ZIP separadamente
- Descompacte os arquivos em uma pasta especificada
No primeiro método, você pode acessar e descompactar explicitamente cada arquivo no arquivo ZIP. Além disso, você pode imprimir o andamento do processo de extração. Considerando que, o segundo método simplesmente descompacta os arquivos na pasta especificada.
Extraia cada arquivo no arquivo separadamente
A seguir estão as etapas para acessar e extrair arquivos e imprimir o progresso da extração em C#:
- Abra o arquivo ZIP em um objeto FileStream.
- Crie e inicialize a instância de Archive com o objeto FileStream.
- Acesse os arquivos no ZIP usando a coleção Archive.Entries.
- Defina o manipulador de eventos ArchiveEntry.ExtractionProgressed para imprimir o progresso da extração.
- Extraia/descompacte arquivos usando o método ArchiveEntry.Extract(string).
O exemplo de código a seguir mostra como extrair arquivos em um arquivo ZIP usando C#.
// Abrir arquivo ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
{
// Acesse cada entrada no arquivo ZIP
for (int i = 0; i < archive.Entries.Count; i++)
{
int percentReady = 0;
// Registre o progresso da extração no console.
archive.Entries[i].ExtractionProgressed += (s, e) =>
{
int percent = (int)((100 * e.ProceededBytes) / ((ArchiveEntry)s).UncompressedSize);
if (percent > percentReady)
{
Console.WriteLine(string.Format("{0}% decompressed", percent));
percentReady = percent;
}
};
// Extraia o conteúdo da entrada para o disco.
archive.Entries[i].Extract(archive.Entries[i].Name);
}
}
}
Extrair arquivos em uma pasta
As etapas a seguir são usadas para extrair arquivos em uma pasta específica em C#.
- Abra o arquivo ZIP usando a classe FileStream.
- Crie uma instância da classe Archive e inicialize-a com o objeto FileStream do ZIP.
- Descompacte os arquivos usando o método Archive.ExtractToDirectory(string).
O exemplo de código C# a seguir descompacta os arquivos em uma pasta.
// Abrir arquivo ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
using (var archive = new Archive(zipFile))
{
// Descompacte os arquivos para a pasta
archive.ExtractToDirectory("Unzipped Files");
}
}
Descompacte arquivos ZIP protegidos por senha em C#
Você também pode descompactar um arquivo ZIP protegido por senha usando Aspose.ZIP para .NET. Para isso, basta especificar a senha utilizando a classe ArchiveLoadOptions que será passada como segundo parâmetro para o construtor do Archive.
Veja a seguir o código de exemplo para descompactar um arquivo ZIP protegido por senha.
// Abrir arquivo ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
// Descriptografar usando senha
using (var archive = new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
// Extrair arquivos para pasta
archive.ExtractToDirectory("Unzipped Files");
}
}
Extraia arquivos ZIP criptografados AES em C#
Um arquivo ZIP também pode ser criptografado com criptografia AES. Aspose.ZIP para .NET suporta arquivos de criptografia com métodos de criptografia AES128, AES192 e AES256. Descompactar um arquivo ZIP criptografado AES é semelhante a descompactar arquivos ZIP protegidos por senha. Basta especificar a senha de descriptografia usando a classe ArchiveLoadOptions e o resto será feito pela API.
O exemplo de código a seguir mostra como descompactar arquivos ZIP criptografados por AES em C#.
// Abrir arquivo ZIP
using (FileStream zipFile = File.Open("encrypted.zip", FileMode.Open))
{
// Descriptografar e extrair para a pasta
new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }).ExtractToDirectory("decrypted");
}
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 descompactar arquivos ZIP usando C#. Além disso, você viu como descompactar arquivos em arquivos ZIP protegidos por senha. Os exemplos de código também demonstraram como extrair arquivos em um arquivo ZIP criptografado em C#. Você pode explorar mais sobre o Aspose.ZIP para .NET usando documentação.