Login Registre-se

Home > Artigos > Java em Geral >

Arquivos ZIP em Java

Publicado por Tadeu_Santos em 18/01/2011 - 81.575 visualizações


comentários: 10

Arquivos ZIP em Java
1. Compactando arquivos com Java

Java possui um pacote de classes que permitem compactação de dados. Vejamos como é fácil compactar todos os arquivos de uma pasta.

O primeiro passo é importar as classes que usaremos:


Do pacote java.io usaremos classes para manipular fluxos (streams) de entrada e saída de dados. Ao passo que no pacote java.util.zip estão as classes que farão a compactação
dos dados.
É recomendado estudar a documentação desses dois pacotes, facilitará o entendimento.
http://java.sun.com/j2se/1.4.2/docs/api/java/util/zip/package-summary.html
http://java.sun.com/j2se/1.4.2/docs/api/java/io/package-summary.html

Vamos ao código e depois daremos uma passada nas partes importantes.



Esta é a nossa classe Compactador, percebe-se que usaremos seu método compactar() para compactar todos os arquivos da pasta onde nossa classe está. Para usar o método é necessário instanciar um objeto da classe, por exemplo:



O método recebe uma String como argumento com o nome do arquivo a ser criado. Ex.:"arquivo.zip".

1.1 Armazenadores

Vamos dar uma geral nas variáveis do método compactar.


1.2 Primeira parte importante



Aqui é criado o objeto saida que será usado para gravar o nosso arquivo ZIP. Nesta parte também criamos o array arquivos que recebe a lista dearquivos e subpastas da pasta onde a classe se encontra.

1.3 Compactação

Para serem compactado, os arquivos têm que ser abertos, lidos e seus conteúdos escritos como entrada (entry) no arquivo ZIP. Isto é feito, arquivo por arquivo, percorrendo os elementos do array arquivos. É o que vemos no código abaixo.



Veja que estamos compactando somente os arquivos da pasta, ignorando suas subpastas. Você poderia exercitar-se mudando isto :) .

O fragmento abaixo merece uma atenção especial.



É aqui que dizemos para saida que estamos enviando um novo arquivo (entrada).
Depois de informamos isto, podemos gravar (de 2 em 2 KB, lembra?) os dados no arquivo ZIP.



1.4 Observações finais
O resto do código é bastante simples, vale lembrar que sempre após ler ou gravar um arquivo, o seu stream deve ser fechado (origem.close(), saida.close()).
Enfim, um código bem simples que pode ser muito bem explorado em aplicações diversas.
Dica: Tente fazer o método de descompactar.

Até o próximo.

Tadeu R. A. Santos


comentários: 10