Baixar arquivo em Java
-
Baixe um arquivo usando o pacote
java.nio
em Java -
Baixe um arquivo usando
FileUtils.copyURLToFile()
em Java -
Baixe um arquivo usando
Files.copy()
em Java

Este artigo nos ensina como podemos baixar um arquivo em Java usando vários métodos. Abaixo, veremos quatro maneiras de baixar um arquivo em Java. Nosso foco principal é apenas baixar um arquivo de uma URL que usaremos nos exemplos.
Baixe um arquivo usando o pacote java.nio
em Java
O primeiro exemplo neste tutorial usa o pacote java.nio
que é apenas uma alternativa melhorada e avançada ao tradicional java.io
do Java. A parte nio
significa New Input/Output
, o que indica que tem melhores capacidades do que o pacote anterior. java.nio
fornece novos métodos de rede que podemos usar.
No código a seguir, primeiro, criamos um objeto URL
fetchWebsite
com a URL de onde queremos baixar nosso arquivo. Em seguida, construímos um canal que lê o fluxo de fetchWebsite
e fazemos isso chamando o método newChannel()
da classe Channels
. Para criar um fluxo chamamos openStream()
de fetchWebsite
.
Agora, criamos um objeto FileOutputStream
fos
que cria um arquivo localmente com o nome especificado. Finalmente, obtemos o arquivo da fonte online usando o método transferFrom()
. Este método transfere os dados da fonte para um FileChannel
que grava no fos
. transferFrom()
leva três argumentos, primeiro é o objeto readableByteChannel
, segundo é a posição de onde queremos começar a escrever o arquivo, ou seja, 0ª posição e por último o número máximo de bytes a transferir.
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
public class DownloadFile {
public static void main(String[] args) throws IOException {
URL fetchWebsite = new URL(
"https://theswissbay.ch/pdf/Gentoomen%20Library/Programming/Java/Introduction%20to%20Java%20IO.pdf");
ReadableByteChannel readableByteChannel = Channels.newChannel(fetchWebsite.openStream());
try (FileOutputStream fos = new FileOutputStream("C:\\Users\\Downloads\\IntroToJava.pdf")) {
fos.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE);
}
}
}
Baixe um arquivo usando FileUtils.copyURLToFile()
em Java
A próxima melhor maneira de baixar um arquivo de uma fonte online é usar o método FileUtils.copyUrlToFile()
incluído na biblioteca Apache Commons-IO.
Usamos o código a seguir para incluir a dependência no projeto.
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
Abaixo, criamos um objeto URL
com o link para o recurso de arquivo online. Em seguida, criamos um arquivo local onde o arquivo baixado pode residir. Para fazer isso, fazemos um objeto da classe File
e passamos o nome do arquivo com a extensão para seu construtor.
Por fim, chamamos o método copyURLToFile()
da classe FileUtils
que leva dois argumentos: o objeto URL
e o objeto file
.
import java.io.File;
import java.io.IOException;
import java.net.URL;
import org.apache.commons.io.FileUtils;
public class DownloadFile {
public static void main(String[] args) throws IOException {
URL fetchWebsite = new URL(
"https://theswissbay.ch/pdf/Gentoomen%20Library/Programming/Java/Introduction%20to%20Java%20IO.pdf");
File file = new File("JavaIo.pdf");
FileUtils.copyURLToFile(fetchWebsite, file);
}
}
Baixe um arquivo usando Files.copy()
em Java
Assim como no primeiro exemplo, usamos o pacote java.nio
, mas para chamar um método diferente. copy()
é um método da classe Files
. Como o nome da função sugere, ela copia um arquivo para o destino especificado.
No código, temos um objeto URL
fetchWebsite
que aponta para a fonte do arquivo. Criamos um objeto de Path
que diz ao destino para onde queremos que o arquivo seja copiado. Em seguida, abrimos um fluxo para obter os bytes do recurso online e passar o inputSteam
para copy()
. Como leva três argumentos, o primeiro e o segundo são os objetos inputStream
e path
, enquanto o terceiro especifica o CopyOption
ou a forma como a operação de cópia deve ser realizada. Usamos StandardCopyOption.REPLACE_EXISTING
para substituir o arquivo se ele já existir.
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
public class DownloadFile {
public static void main(String[] args) throws IOException {
URL fetchWebsite = new URL(
"https://theswissbay.ch/pdf/Gentoomen%20Library/Programming/Java/Introduction%20to%20Java%20IO.pdf");
Path path = Paths.get("JavaIO.pdf");
try (InputStream inputStream = fetchWebsite.openStream()) {
Files.copy(inputStream, path, StandardCopyOption.REPLACE_EXISTING);
}
}
}
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn