Compactar gerar .zip com Java - Lança IOException ao executar o método

3 respostas
A
private void compactarParaZip(String arqSaida, String arqEntrada) throws IOException{
	       int tamanhoBuffer = (int) epubFullTemporario.length();
		   int cont = 0;
	       byte[] dados = new byte[tamanhoBuffer];
	                   
	       BufferedInputStream origem = null;
	       FileInputStream streamDeEntrada = null;
	       FileOutputStream destino = null;
	       ZipOutputStream saida = null;
	       ZipEntry entry = null;
	              
	       try {
	            destino = new FileOutputStream(new File(arqSaida));
	            saida = new ZipOutputStream(new BufferedOutputStream(destino));
	            File file = new File(arqEntrada);
	            streamDeEntrada = new FileInputStream(file);
	            origem = new BufferedInputStream(streamDeEntrada, tamanhoBuffer);
	            entry = new ZipEntry(file.getName());
	            saida.putNextEntry(entry);
	                       
	            while((cont = origem.read(dados, 0, tamanhoBuffer)) != -1) {
	                saida.write(dados, 0, cont);
	            }
	            origem.close();
	            saida.close();
	        } catch(IOException e) {
	            throw new IOException(e.getMessage());
	        }
	   }

3 Respostas

A

.

ViniGodoy

Oi.

Retire aquele try catch dali. Se você não vai tratar a exceção, não tem porque retirar toda a informação de stack trace dela antes de relança-la.
Depois, seria muito interessante que você colocasse o texto da exception.

Se você copiou o exemplo daqui:
http://java.sun.com/developer/technicalArticles/Programming/compression/

Provavelmente esse código deveria funcionar. Pelo menos para um arquivo só.
Outra opção é dar uma olhada em como o meu software de esteganografia faz.

A

Oi Vini, como vai?

Obrigado pelas dicas... Acontece que para um arquivo só funciona. A questão é que agora preciso compactar arquivo e pasta juntos gerando um só .zip ex: tudo.zip. Veja meu método que estou tendo mas o último arquivo sobrescreve o primeiro:

private void compactarParaZip(String arqEntrada1, String arqEntrada2, String arqSaida) throws IOException{
	      
		   int tamanhoBuffer = 99999;
		   int cont = 0;
	       byte[] dados = new byte[tamanhoBuffer];
	                   
	       BufferedInputStream origem1 = null;
	       BufferedInputStream origem2 = null;
	       
	       FileInputStream streamDeEntrada1 = null;
	       FileInputStream streamDeEntrada2 = null;
	       
	       FileOutputStream destino = null;
	       
	       ZipOutputStream saida = null;
	    	     	       
	       ZipEntry entry1 = null;
	       ZipEntry entry2 = null;
	              
	       try {
	            destino = new FileOutputStream(new File(arqSaida));
	            
	            saida = new ZipOutputStream(new BufferedOutputStream(destino));
	            	            	            
	            File file1 = new File(arqEntrada1);
	            File file2 = new File(arqEntrada2);
	            
	            streamDeEntrada1 = new FileInputStream(file1);
	            streamDeEntrada2 = new FileInputStream(file2);
	            
	            origem1 = new BufferedInputStream(streamDeEntrada1, tamanhoBuffer);
	            origem2 = new BufferedInputStream(streamDeEntrada2, tamanhoBuffer);
	            
	            entry1 = new ZipEntry(file1.getName());
	            entry2 = new ZipEntry(file2.getName());
	            
	            saida.putNextEntry(entry1);
	            saida.putNextEntry(entry2);
	                       
	     
	            
	            while((cont = origem2.read(dados, 0, tamanhoBuffer)) != -1) {
	                saida.write(dados, 0, cont);
	            }
	            
	            while((cont = origem1.read(dados, 0, tamanhoBuffer)) != -1) {
	                saida.write(dados, 0, cont);
	            }
	            
	            origem1.close();
	            origem2.close();
	            
	            saida.close();
	            
	        } catch(IOException e) {
	            throw new IOException(e.getMessage());
	        }
	   }

Estou lendo o programinha que você me recomendou...

Abraços,
Obrigado pela grande ajuda.
AS

Criado 17 de janeiro de 2011
Ultima resposta 17 de jan. de 2011
Respostas 3
Participantes 2