Compactação de arquivos em memória

5 respostas
felipedamiani

Pessoal, estou gerando dois arquivos ambos em memória com ByteArrayOutputStream e
preciso compactar esse dois arquivos para que o usuário faça download… o cenário é o seguinte, o usuário
clica num link, eu gero os arquivos, compacto e jogo no outputstream da página para download…

isso tudo em memória, porém não estou achando um forma de compactar esses dois arquivos que estão só memória…

Alguem tem alguma sugestão?

5 Respostas

E

Você tem 2 arquivos. Eles têm de ser mandados separadamente (cada um em um link) ou então em um único arquivo .zip ?

felipedamiani

Os dois em um único zip.

jweibe

Cara tenta algo como:

ByteArrayOutputStream zipFinal = new ByteArrayOutputStream();

// seus arquivos ByteArrayOutputStream 
ByteArrayOutputStream zipUm = new ByteArrayOutputStream(); 
ByteArrayOutputStream zipDois = new ByteArrayOutputStream();
	
ZipOutputStream zipOutputStream = new ZipOutputStream(zipFinal);
		
ZipEntry zipEntryUm = new ZipEntry("arquivo_um.zip");
zipOutputStream.putNextEntry(zipEntryUm);
zipOutputStream.write(zipUm.toByteArray());
zipOutputStream.flush(); zipOutputStream.closeEntry();
		
ZipEntry zipEntryDois = new ZipEntry("arquivo_dois.zip");
zipOutputStream.putNextEntry(zipEntryDois);
zipOutputStream.write(zipDois.toByteArray());
zipOutputStream.flush(); zipOutputStream.closeEntry();	
		
zipOutputStream.close();

...

OutputStream out = response.getOutputStream()
out.write(zipFinal.toByteArray());
out.flush(); out.close()
ViniGodoy
felipedamiani

jweibe funcionou perfeitamente, valeu!!

Criado 7 de março de 2013
Ultima resposta 7 de mar. de 2013
Respostas 5
Participantes 4