Olá,
Tenho uma classe que faz tratamento em arquivos e retorna um ByteArrayOutputStream, gostaria de pegar essa informação e colocar em um arquivo para poder visualizar o conteúdo. Como faço??? tentei da forma abaixo mas não funcionou…
LeDados trans = new LeDados();
ByteArrayOutputStream baos = trans.pagamentoSegundaVia( "052008",
"c:\temp\Principal.pdf" );
File arquivo = new File("c:\temp\testeFull.pdf");
FileOutputStream fout = new FileOutputStream(arquivo);
fout.write(baos.toByteArray());
fout.close();
Vc tem que copiar o stream para o stream do arquivo. mas como vc tem um output ve precisa primeiro converter para input.
(nota: o seu método deveria retornar um InputtStream )
LeDados trans = new LeDados();
ByteArrayOutputStream baos = trans.pagamentoSegundaVia( "052008",
"c:\temp\Principal.pdf" );
InputtStream in = new ByteArrayInputStream (baos.toByteArray());
File arquivo = new File("c:\temp\testeFull.pdf");
FileOutputStream fout = new FileOutputStream(arquivo);
copy ( in, arquivo);
private void copy(InputStream in,OutputStream out) throws IOException{
byte[] buffer = new byte[1024 * 4]; //4 Kb
int n = 0;
while (-1 != (n = in.read(buffer))) {
out.write(buffer, 0, n);
}
out.flush();
out.close();
in.close();
}
A classe ByteArrayOutputStream tem um método “toByteArray”, portanto é bem simples criar um arquivo com base no array de bytes que é retornado por esse método.
sergioborda,
o mpetodo retorna um outputstream pois a chamda é feita em um servlet e esse output é direcionado diretamente para o usuário baixar ou abrir o arquivo. Essa minha implementação para transformar em arquivo é apenas para eu fazer testes e saber se a geração do arquivo está correta.
Vou tentar usar sua solução e posto o resultado aqui.
thingol,
Eu já havia tentado sua sugestão, de uma olhada no meu post inicial.
Obrigado a todos pelas dicas…