VB.NET - Criando, extraindo e abrindo arquivos ZIP com a classe ZipFile
No artigo de hoje eu vou mostrar como podemos usar a classe ZipFile para criar, abrir e extrair arquivos ZIP. |
A classe
ZipFile esta disponível a partir da versão 4.5 da plataforma .NET e veio
para simplificar o tratamento de arquivos ZIP fornecendo métodos estáticos para
criar, extrair e abrir esses arquivos.
Para poder usar os métodos dessa classe você tem que referenciar o assembly System.IO.Compression.FileSystem no seu projeto.
A seguir temos os métodos da classe ZipFile:
Nome | Descrição |
---|---|
CreateFromDirectory(String, String) | |
CreateFromDirectory(String, String, CompressionLevel, Boolean) | |
CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding) | |
ExtractToDirectory(String, String) | |
ExtractToDirectory(String, String, Encoding) | |
Open(String, ZipArchiveMode) | |
Open(String, ZipArchiveMode, Encoding) | |
OpenRead |
fonte: https://msdn.microsoft.com/pt-br/library/system.io.compression.zipfile%28v=vs.110%29.aspx
Recursos usados:
Criando o projeto no Visual Studio 2013 Express for windows desktop
Abra o VS 2013 Express for windows desktop e clique em New Project;
Selecione a linguagem Visual Basic e o template Windows Forms Application;
Informe o nome Usando_ZipFile e clique no botão OK;
A seguir vamos incluir uma referência no projeto aos assemblies da classe ZipFIle.
Clique no menu PROJECT -> Add Reference e selecione os itens System.IO.Compression e System.IO.Compression.FileSystem clicando a seguir no botão OK;
Formulário principal do projeto form1.vb inclua os seguinte controles a partir da ToolBox:
3 Label
1 TextBox - txtDiretorioOrigem
1 TextBox - txtNomeArquivoZip
1 TextBox - txtDiretorioDestino
3 Buttons - btnCriarZIP , btnAbrirZIP, btnExtrairZIP
1 ListBox - lbArquivos
Disponha os controles no formulário form1.vb conforme o leiaute abaixo:
Após isso declare no início do formulário os namespaces:
Imports System.IO.Compression
Agora vamos definir em cada evento Click dos botões de comando o código
pertinente a cada tarefa:
1- Criar Arquivo ZIP
Private Sub btnCriarZIP_Click(sender As Object, e As EventArgs) Handles btnCriarZIP.Click
If String.IsNullOrWhiteSpace(txtDiretorioOrigem.Text) Then
MessageBox.Show("Informe o diretório de origem dos arquivos ZIP", "Origem", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtDiretorioOrigem.Focus()
Return
End If
If String.IsNullOrWhiteSpace(txtNomeArquivoZip.Text) Then
MessageBox.Show("Informe o local e nome do arquivo ZIP a ser gerado", "Arquivo ZIP", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtDiretorioDestino.Focus()
Return
End If
Try
ZipFile.CreateFromDirectory(txtDiretorioOrigem.Text, txtNomeArquivoZip.Text)
MessageBox.Show("Arquivo ZIP criado com sucesso", "Arquivo ZIP", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show("Erro : " & ex.Message, "Erro Arquivo ZIP", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
2- Abrir Arquivo ZIP
Private Sub btnAbrirZIP_Click(sender As Object, e As EventArgs) Handles btnAbrirZIP.Click
If String.IsNullOrWhiteSpace(txtNomeArquivoZip.Text) Then
MessageBox.Show("Informe o local e nome do arquivo ZIP a ser gerado", "Arquivo ZIP", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtDiretorioDestino.Focus()
Return
End If
Dim localNomeArquivoZIP As String = txtNomeArquivoZip.Text
Try
If File.Exists(localNomeArquivoZIP) Then
Using arquivoZip As ZipArchive = ZipFile.Open(localNomeArquivoZIP, ZipArchiveMode.Read)
For Each entry As ZipArchiveEntry In arquivoZip.Entries
' ... Exibe as propriedades e extrai para o diretorio
lbArquivos.Items.Add("Tamanho: " + entry.CompressedLength.ToString)
lbArquivos.Items.Add("Nome : " + entry.Name)
'podemos também usar o método ExtractToFile para extrair para um arquivo
'entry.ExtractToFile("c:\diretorio" + entry.Name)
Next
End Using
Else
MessageBox.Show("Arquivo ZIP não existe no local", "Não Existe ZIP", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
Catch ex As Exception
MessageBox.Show("Erro : " & ex.Message, "Erro Arquivo ZIP", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
3- Extrair Arquivo ZIP
Private Sub btnExtrairZIP_Click(sender As Object, e As EventArgs) Handles btnExtrairZIP.Click
If String.IsNullOrWhiteSpace(txtDiretorioDestino.Text) Then
MessageBox.Show("Informe o diretório de destino do arquivo ZIP", "Destino", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtDiretorioDestino.Focus()
Return
End If
If String.IsNullOrWhiteSpace(txtNomeArquivoZip.Text) Then
MessageBox.Show("Informe o local e nome do arquivo ZIP a ser gerado", "Arquivo ZIP", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtDiretorioDestino.Focus()
Return
End If
Try
If File.Exists(txtNomeArquivoZip.Text) Then
ZipFile.ExtractToDirectory(txtNomeArquivoZip.Text, txtDiretorioDestino.Text)
MessageBox.Show("Arquivos ZIP extraidos com sucesso", "Extrair ZIP", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("Arquivo ZIP não existe no local", "Não Existe ZIP", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
Catch ex As Exception
MessageBox.Show("Erro : " & ex.Message, "Erro Arquivo ZIP", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
|
Executando o projeto iremos obter o seguinte resultado após realizar algumas operações:
Pegue o projeto completo aqui: Usando_ZipFIle.zip
De sorte que haja em vós o mesmo sentimento que houve também em Cristo Jesus,
Que, sendo em forma de Deus, não teve por usurpação ser igual a Deus,
Mas esvaziou-se a si mesmo, tomando a forma de servo, fazendo-se semelhante aos
homens;
E, achado na forma de homem, humilhou-se a si mesmo, sendo obediente até à
morte, e morte de cruz.
Filipenses 2:5-8
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: