Tenho um metodo que retorna um list com muita informação e depois em outro metodo é iterado e inserido em uma planilha, mas o arquivo de download está muito grande e queria implementar um metodo para zipar este arquivo. Algum amigo tem um exemplo?
Estou tentando usar o código abaixo, mas ele esta zipando os arquivos do diretorio on esta a classe, queria que o parametro de entrada do metodo fosse a planilha e retornasse essa planilha zipada… Como posso fazer issto amigos?
// ------------------------------------------------ Constantes staticfinalintTAMANHO_BUFFER=2048;// 2kb // ------------------------------------------------ Métodos públicos publicvoidcompactar(StringarqSaida){inti,cont;byte[]dados=newbyte[TAMANHO_BUFFER];Stringarquivos[];Filef=null;BufferedInputStreamorigem=null;FileInputStreamstreamDeEntrada=null;FileOutputStreamdestino=null;ZipOutputStreamsaida=null;ZipEntryentry=null;try{destino=newFileOutputStream(arqSaida);saida=newZipOutputStream(newBufferedOutputStream(destino));f=newFile(".");// Todos os arquivos da pasta onde a classe está arquivos=f.list();for(i=0;i<arquivos.length;i++){Filearquivo=newFile(arquivos[i]);if(arquivo.isFile()&&!(arquivo.getName()).equals(arqSaida)){System.out.println("Compactando: "+arquivos[i]);streamDeEntrada=newFileInputStream(arquivo);origem=newBufferedInputStream(streamDeEntrada,TAMANHO_BUFFER);entry=newZipEntry(arquivos[i]);saida.putNextEntry(entry);while((cont=origem.read(dados,0,TAMANHO_BUFFER))!=-1){saida.write(dados,0,cont);}origem.close();}}saida.close();}catch(Exceptione){e.printStackTrace();}}//fim compactar()