Zip/unzip Em Java
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)
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
Saiba como surgiu a linguagem .NET, por que ela é diferente das demais linguagens e as vantagens que isso proporciona.
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.
Entenda como funciona o uso de memória pelo Java e como se prevenir de memory leaks
Aprenda a utilizar a Commons E-mail API para enviar e-mails utilizando Java
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.
A AGIT INFORMÁTICA iniciou inscrições para turma de Qt 4.6.
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.
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.
Entenda como funciona o uso de memória pelo Java e como se prevenir de memory leaks
Aprenda a utilizar a Commons E-mail API para enviar e-mails utilizando Java
Como realizar os procedimentos de compactação e descompactação de arquivos ZIP utilizando a linguagem de programação Java.

