quinta-feira, 3 de novembro de 2022

Pegando um arquivo de uma URL com Java

     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:

try {
    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:

try {
    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