Java download arquivo

Este post mostra como fazer o download de arquivos a partir de uma URL Http em Java

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Java - TUTORIAL

Última atualização em: | 5397 Visualizações

Existem algumas formas de realizar o download de arquivos em java. A primeira delas é utilizando classes nativas do Java.

Para isso utilizaremos algumas classes do Java NIO.

Neste exemplo utilizaremos a logomarca do Receitas de Código. Veja o código:

import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;

public class HttpUtils {

    public static void main(String[] args) {

        final String httpFile = "https://receitasdecodigo.com.br/resources/codeconference/img/favicon.png";
        final String localFile = "/home/wolmir/download.png";

        try {
            URL website = new URL(httpFile);
            ReadableByteChannel rbc = Channels.newChannel(website.openStream());
            FileOutputStream fos = new FileOutputStream(localFile);
            fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
            fos.close();
            rbc.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Note que esta é uma forma de realizar o download sem utilizar nenhuma dependência adicional ao projeto.



Usando Apache Commons IO

Pra utilizar o Apache Commons IO primeiro é necessário adicionar a dependência no projeto.

Considerando que seja um projeto maven, adicione a dependência ao pom.xml:

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

Agora basta utilizar o método copyURLToFile disponível na classe FileUtils do pacote org.apache.commons.io.

Seguindo o mesmo exemplo mostrado acima, alteramos o código da seguinte forma:

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;

public class HttpUtils {

    public static void main(String[] args) throws IOException {

        final String httpFile = "https://receitasdecodigo.com.br/resources/codeconference/img/favicon.png";
        final String localFile = "/home/wolmir/download.png";

        FileUtils.copyURLToFile(new URL(httpFile), new File(localFile));
    }
}

Note que o código fica muito mais simples fazendo o uso da classe utilitário FileUtils.

Para finalizar, ainda pode passar ao método mais dois parâmetros em milissegundos, o connectionTimeout e readTimeout opcionalmente. Dependendo do tamanho do arquivo a ser baixado pode ser útil estes parâmetros.

Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Apoiadores

Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!