domingo, 9 de janeiro de 2011

Compactador de Arquivos


Se você não estiver gostando de como os compactadores de mercado funcionam, ou se quiser criar um você mesmo um compactador para utilizar em sua aplicação, então veio ao lugar certo!
Então vamos ver, passo a passo o que precisamos.
Materiais:
Uma string, com o caminho do arquivo original (C:\pasta\arquivo.txt)
Uma string, com o nome do arquivo compactado (arquivo.zip)
Um array de bytes
Um objeto ZipOutputStream 
Um objeto FileInputStream
Um laço, bem preparado
Paciência e determinação para forjar o compactador.

Modo de preparo.
public static void compactarArquivo(String origem, String destino) {
//Array de bytes que será utilizado para a compactação
byte[] buf = new byte[1024];
//É necessário inserir o código dentro de um try, para capturar possíveis erros
try{
//Nome do arquivo de destino (não é necessário o caminho)
String compac = destino;
//Criação do objeto ZIP, criando um arquivo de saída com o nome informado
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(compac));
//Criação de um arquivo de entrada, para ser lido e compactado
FileInputStream in = new FileInputStream(origem);
//Aqui informamos que o objeto ZipOutputStream será criado com base
//no arquivo de origem.
out.putNextEntry(new ZipEntry(origem));
//Variável de controle do laço.
int loop;
//Esse loop irá ler cada byte do arquivo de origem, e irá copiá-lo
//de forma comprimida para o arquivo compactado.
while((loop= in.read(buf)) > 0){
out.write(buf, 0, loop);
}
//Aqui é finalizada a compactação
out.closeEntry();
//Podemos fechar o arquivo de entrada (origem)
in.close();
//Fechamos (e criamos) o arquivo compactado
out.close();
catch(FileNotFoundException mensagem) {
mensagem.printStackTrace();
catch(IOException erro) {
erro.printStackTrace();
catch(Exception erro) {
erro.printStackTrace();
}
}

Se os comentários dentro do método não estiverem ajudando muito, deixe um comentário que ajudarei no que for possível.
Boa sorte!

Esse arquivo pode ser visto também aqui.

Nenhum comentário:

Postar um comentário