Zip/unzip Em Java

Publicado em: 11/27/2009 | Comentário: 1 | Acessos: 99

Zip/Unzip em Java

Colaboração: Carlos Tosin (instrutor oficial do Curso On-Line de Fundamentos de Java da Softblue)

A compactação de dados está amplamente presente em sistemas, serviços e aplicativos. Quem nunca precisou compactar arquivos para mandar para alguém, ou então compactar dados para trafegarem pela rede?

Neste tópico apresentarei uma maneira fácil para compactar e descompactar arquivos no formato ZIP utilizando Java. Java possui suporte a arquivos ZIP, logo não é necessário utilizar nenhuma API extra. As classes estão localizadas dentro do pacote java.util.zip. As classes principais desse pacote são: ZipEntry, ZipFile, ZipInputStream e ZipOutputStream. Para demonstrar como a compactação e descompactação funcionam, vou mostrar a criação de uma classe com dois métodos: zip() e unzip(). Todo o "trabalho sujo" fica por conta da classe. O código-fonte desta explicação pode ser obtido aqui.

Vamos começar pelo método zip(). O método zip() recebe dois parâmetros: o primeiro é a lista de arquivos a serem zipados; e o segundo é o arquivo ZIP que será gerado. O código deste método é bastante simples porque toda a lógica de compactação se encontra no método zipFiles().

O método zipFiles() é reponsável por iterar sobre a lista de arquivos e adicioná-los ao arquivo ZIP de saída. Esta tarefa seria simples, mas às vezes queremos compactar não apenas arquivos, mas também estruturas de diretórios dentro do nosso arquivo ZIP. E para manter essa estrutura de diretórios de forma correta, devemos programar este comportamento manualmente.

Observe que, caso uma das entradas que deve aparecer no arquivo ZIP seja um diretório, o método zipFiles() é chamado recursivamente, passando como parâmetro a lista de arquivos do diretório. Esta abordagem possibilita que o método processe todos os arquivos de cada diretório, de uma forma semelhante à busca em profundidade que aprendemos nas aulas de Estruturas de Dados. Junto com a lista de arquivos, também é fornecida uma pilha com os nomes dos diretórios onde o arquivo se encontra. Essa informação é utilizada na reconstrução do caminho do arquivo dentro do arquivo ZIP.

Já para descompactar, temos o método unzip(). O método unzip() recebe dois parâmetros: o arquivo ZIP a ser descompactado e um diretório para a descompactação. No caso da descompactação é feito o caminho inverso da compactação. Cada entrada do arquivo ZIP é lida e gravada no sistema de arquivos. Caso a entrada seja um diretório, a estrutura de diretórios deve primeiramente ser criada e só então o arquivo deve ser descompactado (o Java não cria os diretórios automaticamente, ficando a cargo do programador garantir a criação dos diretórios necessários).

Esses dois métodos representam uma solução básica e bem completa para compactar e descompactar arquivos. Recomendo que você inclua esta funcionalidade em um componente, a fim de que possa ser usado em diferentes projetos.

(Artigonal SC #1513586)

Avalie este artigo
  • 1
  • 2
  • 3
  • 4
  • 5
  • 0 Voto(s)
    Feedback
    RSS
    Imprimir
    Email
    Re-Publicar

    Fonte do artigo: http://www.artigonal.com/programacao-artigos/zipunzip-em-java-1513586.html

    Palavras-chave do artigo:

    zip unzip curso java carlos tosin softblue

    PROGRAMAÇÃO EM DELPHI, O MAIS FAMOSO COMPILADOR E MODELADOR DE OBJETOS DA ATUALIDADE

    Por: marcos alexandre l Informática > Programação l 02/16/2010 l Acessos: 55
    Felipe Ferreira

    Saiba como surgiu a linguagem .NET, por que ela é diferente das demais linguagens e as vantagens que isso proporciona.

    Por: Felipe Ferreira l Informática > Programação l 01/25/2010 l Acessos: 99
    Carlos Tosin

    Este artigo tem por objetivo mostrar como utilizar a API CGLIB para interceptar chamadas de métodos em objetos no Java. Se você estiver se perguntando “mas por que eu deveria interceptar a chamada de um método?”, pretendo fazer com que você entenda como isso pode aumentar a sua produtividade e reduzir os erros no código.

    Por: Carlos Tosin l Informática > Programação l 01/25/2010 l Acessos: 46
    Carlos Tosin

    Entenda como funciona o uso de memória pelo Java e como se prevenir de memory leaks

    Por: Carlos Tosin l Informática > Programação l 01/25/2010 l Acessos: 34
    Carlos Tosin

    Aprenda a utilizar a Commons E-mail API para enviar e-mails utilizando Java

    Por: Carlos Tosin l Informática > Programação l 01/25/2010 l Acessos: 50
    Felipe Ferreira

    Conheça essa poderosa linguagem que é a ASP. Por ser extremamente fácil de se lidar, ela é hoje, umas das linguagens mais usadas em sites na internet.

    Por: Felipe Ferreira l Informática > Programação l 01/21/2010 l Acessos: 149

    A AGIT INFORMÁTICA iniciou inscrições para turma de Qt 4.6.

    Por: Basilio Miranda l Informática > Programação l 01/15/2010 l Acessos: 57

    A AGIT INFORMÁTICA iniciou inscrições para a primeira turma de LINGUAGEM C++ do ano de 2010. Veja todas as informações do curso em nossos site: www.agit.com.br - desde horários e dias ministrados, valores, formas de pagamento, descontos, localização e muito mais.

    Por: Basilio Miranda l Informática > Programação l 01/15/2010 l Acessos: 46
    Carlos Tosin

    Este artigo tem por objetivo mostrar como utilizar a API CGLIB para interceptar chamadas de métodos em objetos no Java. Se você estiver se perguntando “mas por que eu deveria interceptar a chamada de um método?”, pretendo fazer com que você entenda como isso pode aumentar a sua produtividade e reduzir os erros no código.

    Por: Carlos Tosin l Informática > Programação l 01/25/2010 l Acessos: 46
    Carlos Tosin

    Entenda como funciona o uso de memória pelo Java e como se prevenir de memory leaks

    Por: Carlos Tosin l Informática > Programação l 01/25/2010 l Acessos: 34
    Carlos Tosin

    Aprenda a utilizar a Commons E-mail API para enviar e-mails utilizando Java

    Por: Carlos Tosin l Informática > Programação l 01/25/2010 l Acessos: 50
    Carlos Tosin

    Como realizar os procedimentos de compactação e descompactação de arquivos ZIP utilizando a linguagem de programação Java.

    Por: Carlos Tosin l Informática > Programação l 11/27/2009 l Acessos: 99 l Comentário: 1

    Adicionar novo comentário

     
    * Campos obrigatoriós

    Comments on this article

    0
    1. Paulo Miguel December 17, 2009
    Parabens pela iniciativa.... quebrou um galhão hein !
    Perfil do Autor
    Categorias de Artigos
    Todas as Categorias