Descompacte arquivos em C#

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

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#:

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#.

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.

Artigos relacionados