dúvida ao zipar arquivo

3 respostas
L

Preciso de criar um método que recebe o InputStream de um arquivo como uma entrada,
e o OutputStream de um outro arquivo como uma saída.
Sendo que o arquivo de entrada deverá ser zipado no arquivo de saída.
Esse é o problema que tenho que resolver!!!

Para tentar resolver esse problema criei o método abaixo
No entanto estou tendo problema para utilizar o método putNextEntry de java.util.zip.ZipOutputStream,
pois o mesmo tem como argumento um ZipEntry, e o ZipEntry por sua vez tem como argumento uma String
sendo que eu não tenho a String do arquivo de entrada SOMENTE o InputStream.
Alguém sabe como resolver esse problema ???
A ÚNICA COISA QUE NÃO POSSO MUDAR É A ASSINATURA DO MÉTODO…

import java.io.;
import java.util.zip.
;

public void comprimirZip(InputStream arqEntrada, OutputStream arqSaida) {

byte[] buffer = new byte[1024];
    ZipOutputStream out = new ZipOutputStream(arqSaida);

    try {
                    
        out.putNextEntry(arqEntrada);//Aqui está o problema!!!!!!!!

        int len;
        while ((len = arqEntrada.read(buffer)) > 0 ) {
            out.write(buffer, 0, len);
        }

    } catch (Exception e) {
    }

    try {
        out.closeEntry();
        out.close();

        arqEntrada.close();
    } catch (Exception e) {
    }

}

3 Respostas

maschiojv

sempre use a tag code no código que você postar aqui no forum, muita gente nem lê a sua mensagem se ela estiver sem as tags.

segue a solução:

public static void comprimirZip(InputStream arqEntrada, OutputStream arqSaida) {

		byte[] buffer = new byte[1024];

		ZipOutputStream out = new ZipOutputStream(arqSaida);

		try {

			ZipEntry entry = new ZipEntry("nome_do_arquivo_dentro_do_zip");
			
			out.putNextEntry(entry);//Aqui está o problema!!!!!!!!

			int len;
			while ((len = arqEntrada.read(buffer)) > 0 ) {
				out.write(buffer, 0, len);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

		try {
			out.closeEntry();
			out.flush();
			out.close();

			arqEntrada.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
L

Valeu muito obrigado !!!

A

Teria um método pronto para compactar pasta ao invés de arquivo?

Criado 21 de maio de 2009
Ultima resposta 19 de jan. de 2011
Respostas 3
Participantes 3