Como pegar informações em tempo de execução?!

5 respostas
F

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.

Valeu!!!

Abração.

Fera.

5 Respostas

BrunoBastosPJ

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

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:

marshaller.marshal(aExpRas, (Result) new FileOutputStream(fileName) );

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

Fala galera! Ae, encontrei a solução, valeu pela força ae!

até a próxima.

Abração

Fera.

F

Fera

coloca ai, como foi q vc resolveu

vlw

F

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.

protected void createZip(InputStream iS, String fName, ZipOutputStream zO) throws FileNotFoundException, IOException {
		
   try {
     zO.putNextEntry(new ZipEntry(fName));
     byte[] buffer;
     buffer = new byte[iS.available()];
     int len;
     while ((len = iS.read(buffer)) > 0) {
	zO.write(buffer, 0, len);
     }
//  Complete the entry
     zO.closeEntry();
     iS.close();

    } catch (IOException e) {
    _logger.error("compactarByteArrayToZip(" + fName )");
     throw new FileNotFoundException();
     }
  }

Espero ter ajudado, abração à todos!!!

Fera

Criado 26 de junho de 2006
Ultima resposta 14 de jul. de 2006
Respostas 5
Participantes 3