Java download arquivo
Este post mostra como fazer o download de arquivos a partir de uma URL Http em Java
Ú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.