Galera preciso utilizar o pacote zip do java para compactar arquivos, fiz todos os metodos para a geracao e extração dos arquivos, vistos aqui no tutorial do guj, mas agora estou com uma duvida e se é possivel fazer esse arquivo zip nao existir fisicamente para ser disponibilizado para download em um ambiente web por exemplo, para isso gostaria de tirar todas as duvidas sobre isso.
O que seria a interface Output e inputStream?
No tutorial tinha um exemplo assim
public List<ZipEntry> criarZip(OutputStream os, File[] arquivos) throws ZipException, IOException {
if (arquivos == null || arquivos.length < 1) {
throw new ZipException("Adicione ao menos um arquivo ou diretório");
}
List listaEntradasZip = new ArrayList();
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(os);
for (int i = 0; i < arquivos.length; i++) {
String caminhoInicial = arquivos[i].getParent();
List novasEntradas = adicionarArquivoNoZip(zos, arquivos[i], caminhoInicial);
if (novasEntradas != null) {
listaEntradasZip.addAll(novasEntradas);
}
}
} finally {
if (zos != null) {
try {
zos.close();
} catch (Exception e) {
}
}
}
return listaEntradasZip;
}
o OutputStream seria o arquivo zip nao fisicamente no computador correto?
e como poderia utilizar em ambiente web para download, nao quero criar o arquivo zip no servidor, quero que em tempo de execucao disponibilize esse zip para download, estou utilizando primefaces entao fica assim
zipUtil.criarZip(/** O que passar aqui***/, arquivos)
InputStream stream = new FileInputStream(zipUtil.getArquivoZipAtual());
zip = new DefaultStreamedContent(stream, "application/zip", "Arquivos.zip");
return zip;
em ambiente web eu só consigo passar para download um arquivo fisico no servidor ou nao?
Obrigado