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
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;
Nao rolou fazer casting, da erro.
Qual erro? Como está teu código?
java.lang.ClassCastException: org.apache.catalina.connector.CoyoteOutputStream cannot be cast to java.io.FileOutputStream
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.
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();
}
}
Eu quero salvar o OutputStream em disco…