Converter ByteArrayOutputStream em um arquivo

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…