Gerar .zip contendo todos os arquivos de um List em um único .zip
1 resposta
leocantanhede
Pessoal estou com o seguinte problema:
Tenho uma classe que é responsável por gerar documentos preenchidos que gera os mesmos através de um método que receber uma String com o caminho do template, uma String com o destino do File que será gerado e um List para obter as informações e inserí-las nos File de destino.
Ele esta funcionado normalmente, só que toda vez que eu gerar o File devo inseri-lo em um List que depois será utilizado para gerar um .zip contendo todos os Files em um único .zip.
Minha dúvida é:
Como implemento este método que irá gerar o .zip contendo todos os Files a partir deste List ?
/** * Metodo que compacta o arquivo csv gerado * * @param fileToExport * @return {@String} fileName * @throws Exception * @author paulo.leite */privateStringzipFileToFinalize(FiletoGroupFiles,File...filesToExport)throwsException{byte[]buffer=newbyte[18024];// Nome do arquivo ZIPStringrootPath=fileToExport.getParent();if(rootPath.lastIndexOf("/")!=rootPath.length()-1){rootPath+="/";}StringzipFileName=rootPath+toGroupFiles.getName().replace(".csv",".zip");//se for csv usa mesmo nome.ziptry{ZipOutputStreamout=newZipOutputStream(newFileOutputStream(zipFileName));// Ajusta modo de compressãoout.setLevel(Deflater.BEST_COMPRESSION);for(FilefileToAdd:filesToExport){FileInputStreamin=newFileInputStream(fileToAdd);// Add ZIP entry to output stream.out.putNextEntry(newZipEntry(fileToAdd.getName()));// Transfer bytes from the current file to the ZIP fileintlen;while((len=in.read(buffer))>0){out.write(buffer,0,len);}// Fecha o Entryout.closeEntry();// Close the current file input streamin.close();}// Close the ZipOutPutStreamout.close();}catch(IllegalArgumentExceptioniae){thrownewAdminExportDataException(iae);}catch(Exceptione){thrownewAdminExportDataException(e);}returnzipFileName;}