[code]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());
}
}[/code]
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.
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:
[code]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());
}
}[/code]
Estou lendo o programinha que você me recomendou…
Abraços,
Obrigado pela grande ajuda.
AS