Além disso, será ensinado como acionar os comandos do shell para compilar e executar aplicações.
Algumas aplicações podem gerar um volume muito grande de dados a serem gravados no sistema de arquivos, levando à necessidade cada vez maior de espaço de armazenamento. Um problema semelhante ocorre em aplicações que transmitem grandes quantidades de dados por uma stream, podendo causar a demanda de uma conexão com maior largura de banda.
A fim de oferecer suporte à linguagem Java para compactar dados de forma simples e rápida, sem demandar integração com aplicações de terceiros, o pacote java.util.zip é oferecido desde o JDK 1.1, onde é proposta uma API com comandos capazes de compactar e descompactar arquivos e objetos.
A API java.util.zip suporta os formatos ZIP e GZIP, possibilita a verificação de checksums, além de disponibilizar outros recursos que são acessados de forma simples e eficaz. A seguir são listadas as principais classes desse pacote:
· ZipEntry: É usada para representar arquivos ou diretórios compactados (entradas) em um arquivo ZIP;
· ZipFile: É usada para abrir arquivos ZIP e acessar as suas entradas;
· ZipInputStream e ZipOutputStream: Stream para ler e gravar dados em arquivos compactados no formato ZIP;
· Deflater e Inflater: Oferece recursos de uso geral para compactar e descompactar arquivos usando a popular biblioteca ZLIB;
· DeflaterInputStream, DeflaterOutputStream, InflaterInputStream, InflaterOutputStream: Permite compactar e descompactar arquivos usando o algoritmo “deflate”;
· GZIPInputStream e GZIPOutputStream: Permite ler e criar arquivos compactados no formato GZIP;
· CRC32: Classe usada para calcular o checksum CRC-32 de uma stream de dados.
Utilizando as classes do pacote java.util.zip é possível acessar de forma simples e rápida os recursos de compactação e descompactação de arquivos e objetos. Além disso, são oferecidos vários formatos de compactação, que são adequados para a grande maioria dos casos.
Com base nisso, a seguir serão analisadas algumas das classes do pacote java.util.zip através de exemplos para ler arquivos compactados, gravar arquivos compactados e compactar e descompactar objetos em memória em Java.
Entradas de um arquivo ZIP: a classe ZipEntry
Na linguagem Java, um arquivo ZIP é representado como uma lista de entradas. Uma entrada pode ser um arquivo ou um diretório, que por sua vez também é uma lista de entradas. Para representar uma entrada, sendo arquivo ou diretório, é usado um objeto da classe ZipEntry.
O construtor ZipEntry() recebe como parâmetro o nome da entrada, ou seja, o nome completo do diretório ou arquivo compactado (entrada) pertencente ao arquivo ZIP.
Usando os métodos getComment() e setComment() é possível recuperar ou redefinir o comentário que descreve essa entrada. Os métodos getCompressedSize() e setCompressedSize() permitem acessar o tamanho compactado da entrada.
Já os métodos getSize() e setSize() possibilitam acessar o tamanho original da entrada. Os métodos getCRC() e setCRC(), por sua vez, possibilitam acessar o checksum CRC-32 da entrada. Por fim, getName() retorna o nome da entrada e isDirectory() permite verificar se ela é um diretório.
Lendo arquivos compactados: a classe ZipFile
A classe ZipFile oferece recursos básicos para a leitura
de arquivos ZIP. Com ela, é possível abrir um arquivo ZIP e acessar as suas
entradas. Para isso, são oferecidos construtores sobrecarregados para informar
o nome do arquivo ZIP e o charset (se
necessário), que é o padrão de codificação de nomes de entradas e demais
descrições t ...