Olá! Quarta Feira, 23 de Maio de 2012.



Dicas CódigoFonte.net
Quinta Feira, 28 de Dezembro de 2006

VB 2005 - Compactando e descompactando arquivos

Nas versões anteriores do Visual Basic e mesmo nas versões 1.0 e 1.1 da plataforma .NET era necessário recorrer a componentes de terceiros para realizar a tarefa de compactar e descompactar arquivos. Com a versão 2.0 da plataforma .Net este quadro mudou.

A versão 2.0 da plataforma .NET apresenta o namespace
Sytem.IO.Compression
que contém classes para o fornecimento de serviços básicos para compactar e descompactar streams.

As classes são:

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.

E as enumerações:

CompressionMode - Especifica se vamos Compactar (Compreess) ou descompactar (Decompress) um arquivo stream.

As classes apresentam um comportamento e características similares e são úteis para compactar um fluxo de bytes durante a transferência, como por exemplo, através da rede.

A classe
DeflateStream
implementa o algoritmo Deflate, veja detalhes em: IETF's, RFC 1951. "DEFLATE Compressed Data Format Specification version 1.3.".

A classe
GZipStream
representa o formato de dados gzip, o qual usa um algoritmo padrão da indústria de compactação e descompactação de arquivos. O formato inclui um valor para verificação de redundância cíclica para detectar a corrupção de dados. O formato de dados gzip usa o mesmo algoritmo que a classe
DeflateStream
, mas pode ser estendida para usar outros formatos de compressão. O formato para gzip esta disponível na RFC 1952, "Gzip". Esta classe não pode ser usada para compactar arquivos maiores que 4 GB.

Objetos
GZipStream
compactados escritos para um arquivo com extensão .gz podem ser descompactados usando muitas ferramentas de descompactação comuns; porém esta classe não apresenta a funcionalidade de incluir e extrair arquivos a partir de arquivos .zip.

A funcionalidade de compactação em
DeflateStream
e
GZipStream
está exposta como um stream onde os dados são lidos byte-a-byte, sendo melhor utilizadas para fonte de dados ainda não compactadas. (Se a fonte de dados já estiver compactada usar estas classes pode fazer com que o arquivo aumente de tamanho)

Para compactar e descompactar arquivos vamos criar duas rotinas :
compactaArquivo()
e
descompactaArquivo()
que basicamente interceptam o fluxo de dados (stream) processando os bytes que se movem entre eles e usa a classe
GZipStream
para realizar a operação. O processo usa um buffer com 4096 bytes para processar os dados do arquivo em pacotes permitindo que mesmo arquivos grandes sejam processados.

Você deve usar os namespaces:

Imports System.IO
Imports System.IO.Compression
Imports System.text


Abaixo o código da rotina
compactaArquivo()
que recebe como parâmetro o arquivo origem e o compacta para o arquivo destino.



O código da rotina
descompactaArquivo()
que recebe o arquivo origem a ser descompactado e realiza a operação para um arquivo destino:



Vamos criar um novo projeto no VB 2005 Express Edition com o nome compactArquivos e no formulário padrão definir o formulário form1.vb com o seguinte layout:

Clique para ver a imagem em seu tamanho real

Neste formulário iremos permitir ao usuário efetuar a compactação e descompactação de arquivos usando as funções definidas acima. Para isto vamos incluir no evento Click de cada um dos botões uma chamada às funções:

Private Sub btnCompactar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCompactar.Click
compactaArquivo(txtCompactarOrigem.Text, txtCompactarDestino.Text)

End Sub

Private Sub btnDescompactar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDescompactar.Click

descompactaArquivo(txtDescompactarOrigem.Text, txtDescompactarDestino.Text)

End Sub


Sugestões para você melhorar o projeto :

- Use o componente OpenFileDialog para abrir a caixa de diálogo Abrir Arquivo;
- Use a classe FileInfo (método Length) para obter o tamanho do arquivo antes e depois da compactação;

Referências:
http://msdn2.microsoft.com/en-us/library/system.io.compression.aspx

Baixe este exemplo completo

Por José Carlos Macoratti - www.macoratti.net

Comentários do artigo [Novo comentário]

Nenhum comentário, seja o primeiro a comentar.
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:






CodigoFonte.net » CodigoFonte.eti.br » Compre De Tudo » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010

Procurando Notebooks, Câmeras Digitais, iPhones?

CompreDeTudo.com