Ler um OutputStream e gravar num FileOutputStream

7 respostas
S

Olá,

Eu tenho um arquivo no formato OutputStream,
e eu preciso gravar esse OutputStream em disco…

logo em crio um:

FileOutputStream out = new FileOutputStream(new File(diretorioRelatorio + File.separatorChar + nomeRelatorio));

como eu faço para escrever o OutputStream no FileOutputStream, ou gravar diretamenta o
OutputStream em disco.

Obrigado

7 Respostas

D

Olhando a documentação das duas classes, FileOutputStream estende OutputStream.
Logo, isso aqui:

OutputStream os = new FileOutputStream(...);

Seria válido, bem como o downcasting:

FileOutputStream fos = (FileOutputStream) os;
S

Nao rolou fazer casting, da erro.

D

Qual erro? Como está teu código?

S

java.lang.ClassCastException: org.apache.catalina.connector.CoyoteOutputStream cannot be cast to java.io.FileOutputStream

D

Não, não.
Veja que você está utilizando uma implementação diferente da que eu sugeri, por isso ocorreu a exceção no casting.
Se o que você tem é um objeto de CoyoteOutputStream, você nunca vai conseguir convertê-lo para um FileOutputStream.
Sem olhar o código, fica complicado sugerir algo e estamos suscetíveis a cometer erros como cometi agora.

S
public static void criarThreadGravarArquivoEmDisco(final TipoMime tipoMime, final OutputStream os) {
	if (tipoConsulta != null && usuarioLogado != null && os != null) {
		new Thread(new Runnable() {
			private FileOutputStream fos;

			@Override
			public void run() {
				String diretorioRelatorio = ListarArquivoArmazenadoServlet.getDiretorioRelatorio(tipoConsulta, usuarioLogado.getId());
				String nomeRelatorio = String.format("%s.%s",new SimpleDateFormat("dd_MM_yyyy_HH-mm-ss").format(new Date()),tipoMime.getExtensao());

				try {
					fos = new FileOutputStream(new File(diretorioRelatorio + File.separatorChar + nomeRelatorio));
					fos = (FileOutputStream) os;
					fos.flush();
					fos.close();
				} catch (IOException  e) {
					e.printStackTrace();
				}
			}
		}).start();
	}
}
S

Eu quero salvar o OutputStream em disco…

Criado 14 de fevereiro de 2017
Ultima resposta 14 de fev. de 2017
Respostas 7
Participantes 2