C# - Compactando e Descompactando diretórios
Neste artigo veremos como compactar e descompactar diretórios usando a linguagem C#. |
Se você precisar compactar e descompactar arquivos na plataforma .NET pode usar os recursos do namespace Sytem.IO.Compression que contém classes que fornecem os serviços básicos para compactar e descompactar streams.
A classe ZipFile fornece métodos simples para compactar e descompactar diretórios no formato zip. Essa classe é definida no .NET Framework versão 4.5, portanto, este recurso está disponível Visual Studio 2017.
Para usar a classe, você precisa adicionar uma referência à biblioteca System.IO.Compression.FileSystem.
No exemplo deste artigo também vamos usar diretivas para System.IO.Compression e System.IO.
No namespace System.IO.Compression temos os seguintes tipos para compactar e descompactar arquivos e fluxos :
ZipFile | Fornece métodos estáticos para criar, extrair e abrir arquivos zip. |
ZipArchive | Representa um pacote de arquivos compactados no formato de arquivo zip |
ZipArchiveEntry | Representa um arquivo compactado em um arquivo zip. |
DeflateStream | Fornece métodos e propriedades para compactar e descompactar streams usando o algoritmo Deflate |
GZipStream | Fornece métodos e propriedades para compactar e descompactar streams. |
Vamos começar mostrando como podemos compactar diretórios, para isso vamos usar o método CreateFromDirectory da classe ZipFile que possui a seguinte sintaxe:
public static void
CreateFromDirectory(string
diretorioOrigem, string
arquivoDestino,
CompressionLevel
nivelCompressao,bool
incluirDiretorioBase)
Onde:
diretorioOrigem : O caminho para o diretório a ser arquivado ;
arquivoDestino : O caminho do arquivo morto a ser criado, especificado como um caminho relativo ou absoluto;
nivelCompressao : Um dos valores de enumeração que indica se é necessário enfatizar a eficiência de compactação ou velocidade ao criar a entrada;
incluirDiretorioBase : true inclui o nome do diretório de diretorioOrigem na raiz do arquivo morto, false inclui somente o conteúdo do diretório;
Recursos usados:
Criando o projeto Windows Forms
Abra o VS Community 2017 clique em New Project;
Selecione Visual C# ->Windows Desktop -> Windows Forms App (.NET Framework), informe o nome CShp_ZipPastas e clique no botão OK;
Vamos incluir em nosso projeto a referência aos namespaces citados.
No menu Project clique em Add Reference e localize e marque os pacotes conforme mostrado abaixo:
No formulário Form1.cs do projeto inclua os seguintes controles a partir da ToolBox:
2 Labels
1 TextBox - txtDiretorio
1 Button - btnLocalizarPasta
1 TextBox - txtArquivoCompactado
1 Button - btnLocalizarArquivo
2 Buttons - btnCompactar e btnDescompactar
1 FolderBrowserDialog - fdbdlg1
1 SaveFileDialog - svfdlg1
Disponha os controles conforme o leiaute da
figura abaixo:
No formulário Form1.cs inclua os seguintes namespaces:
using System;
using System.IO;
using System.IO.Compression;
using System.Windows.Forms;
A seguir no evento Load do formulário inclua o código:
Definimos as configurações iniciais do FolderBrowserDialog e o contéudo dos TextBox para a pasta a ser compactada e do arquivo compactado a ser gerado.
A seguir no evento Click dos botões para localizar a pasta a ser compactada e do arquivo a ser gerado vamos definir o código a seguir:
O código usa o FolderBrowserDialog para definir o diretório a ser compactado e o SaveFileDialog para definir o local onde o arquivo compactado vai ser gravado.
Agora vamos incluir o código para compactar a pasta selecionada no evento Click do botão Compactar :
Usamos o método CreateFromDirectory da classe ZipFile que cria um arquivo zip que contém os arquivos e diretórios do diretório especificado, usa o nível de compactação especificado e opcionalmente inclui o diretório base.
Onde txtDiretorio.Text
é caminho da pasta
Agora usamos o método ExtactToDirectory da classe ZipFile para extrair o conteúdo do arquivo zip gerado.
Agora é só alegria...
Executando o projeto teremos:
Pegue o projeto completo aqui: CShp_ZipPastas.zip
"E disse-lhe um: Senhor, são poucos os que se
salvam? E ele lhe respondeu:
Porfiai por entrar pela porta estreita; porque eu vos digo que muitos procurarão
entrar, e não poderão."
Lucas 13:23,24
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
C# - Criando e extraindo arquivos .ZIP - Macoratti
VB.NET - Criando, extraindo e abrindo arquivos ZIP com a ... - Macoratti
.NET - Descompactando arquivos .zip usando o Shell32 (C ... - Macoratti