Galera, estou com o seguinte problema, eu tenho um método que chama vários métodos e cada um desses métodos chamados fazem a montagem de documentos de diferentes tipos(extensões). Eu gostaria de montar um arquivo zip, pegando esses diversos arquivos gerados em tempo de execução, ou seja, preciso que cada método gere cada documento de modo que eu possa pegá-los e manipulá-los com o zipInputStream, o zipOutputStream, o zipEntry e etc… Então eu gostaria de saber como e de que maneira fazer com que eu possa manipular esses diferentes documentos através de um único método que zipa arquivos?!
Desde já agradeço a atenção de todos e aguardo respostas.
Na hora que você cria esses documentos eles estao em um objeto tipo File?
você pode pegar o caminho de um objeto File atravez do método getAbsolutePath()
F
FeraPJ
Cara, vou tentar exemplificar melhor, o método “principal” A, chama o método B. No método B faço toda a montagem do documento e retorno pra A o seguinte comando:
Então, ao retornar ao método A eu crio o File num diretório temporário específico, mas a idéia é não mais criar um diretório temporário para manipular esses arquivos e sim manipulá-los em memória, pois esse método A terá que chamar outros métodos que também retornarão informações para serem convertidas em arquivos e todos esses arquivos farão parte do mesmo zip, logo, o zip não pode ser fechado até todos os arquivos gerados por diferentes métodos sejam acrescentados.
Se puder me ajudar serei grato
Abração
Fera.
F
FeraPJ
Fala galera! Ae, encontrei a solução, valeu pela força ae!
até a próxima.
Abração
Fera.
F
feokumaPJ
Fera
coloca ai, como foi q vc resolveu
vlw
F
FeraPJ
Galera, resolvi mais ou menos assim:
Em cada método eu retornei o resultado como um OutputStream, e na Action inicializei o ZipOutputStream zO, armazenei cada OutputStream retornado numa variável(tb pode ser add a um request), depois, converti esses OutputStream para InputStream e passei para esse método que criei, pra ele eu passo o inputStream, o nome do arquivo e o ZipOutputStream. Esse ZipOutputStream deve ser o mesmo(zO), para que nele sejam add as entradas através desse método e após todas serem add e dentro da action fecha o ZipOutputStream.
protectedvoidcreateZip(InputStreamiS,StringfName,ZipOutputStreamzO)throwsFileNotFoundException,IOException{try{zO.putNextEntry(newZipEntry(fName));byte[]buffer;buffer=newbyte[iS.available()];intlen;while((len=iS.read(buffer))>0){zO.write(buffer,0,len);}// Complete the entryzO.closeEntry();iS.close();}catch(IOExceptione){_logger.error("compactarByteArrayToZip("+fName)"); throw new FileNotFoundException(); } }