Nesse artigo vou mostrar como ler um arquivo de uma URL. Isso pode ser aplicado a um PDF, uma imagem, etc. Vou mostrar uma forma apenas com Java puro e outra que usa o org.apache.commons.io.IOUtils para copiar do InputStream para o OutputStream.
No problema em questão a necessidade original era buscar um arquivo e retorná-lo em memória para um método que irá guardá-lo no banco de dados.
Segue o exemplo de código apenas com o Java puro:
URL url = new URL("http://www.pdf995.com/samples/pdf.pdf");
InputStream in = new BufferedInputStream(url.openStream());
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buf = new byte[121072]; //quantidade de bytes lida por vez
int i = 0;
while (-1 != (i = in.read(buf))){
out.write(buf, 0, i);
}
out.close();
in.close();
byte[] dadosRecebidos = out.toByteArray();
File pdf = File.createTempFile("nomedoc", ".pdf"); //cria arquivo temporário
FileOutputStream fos = new FileOutputStream(pdf); // passa o arquivo para o fos
fos.write(dadosRecebidos); //escreve os dados no arquivo criado
fos.close();
return pdf;
} catch (Exception e) {
e.printStackTrace();
}
Segue o exemplo usando o apache commons:
URL url = new URL("http://www.pdf995.com/samples/pdf.pdf");
InputStream in = new BufferedInputStream(url.openStream());
File pdf = File.createTempFile("nomedoc", ".pdf"); //cria arquivo temporário
FileOutputStream fos = new FileOutputStream(pdf); // passa o arquivo para o fos
IOUtils.copy(in, fos); // usando org.apache.commons.io.IOUtils para passar os dados para o arquivo
in.close();
fos.close();
return pdf;
} catch (Exception e) {
e.printStackTrace();
}
Para este artigo é isso.
Nenhum comentário:
Postar um comentário