Hoje vamos aprender como baixar um arquivo de uma URL em Java. Podemos usar o método java.net.URL
openStream()
para baixar um arquivo de uma URL em um programa Java. Podemos usar Canais Java NIO ou Java IO InputStream para ler dados do fluxo aberto da URL e depois salvá-lo no arquivo.
Java Baixar Arquivo de URL
Aqui está o programa de exemplo simples para baixar arquivo de uma URL em Java. Ele mostra ambas as maneiras de baixar um arquivo de uma URL em Java.
JavaDownloadFileFromURL.java
package com.journaldev.files;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
public class JavaDownloadFileFromURL {
public static void main(String[] args) {
String url = "https://www.journaldev.com/sitemap.xml";
try {
downloadUsingNIO(url, "/Users/pankaj/sitemap.xml");
downloadUsingStream(url, "/Users/pankaj/sitemap_stream.xml");
} catch (IOException e) {
e.printStackTrace();
}
}
private static void downloadUsingStream(String urlStr, String file) throws IOException{
URL url = new URL(urlStr);
BufferedInputStream bis = new BufferedInputStream(url.openStream());
FileOutputStream fis = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int count=0;
while((count = bis.read(buffer,0,1024)) != -1)
{
fis.write(buffer, 0, count);
}
fis.close();
bis.close();
}
private static void downloadUsingNIO(String urlStr, String file) throws IOException {
URL url = new URL(urlStr);
ReadableByteChannel rbc = Channels.newChannel(url.openStream());
FileOutputStream fos = new FileOutputStream(file);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close();
rbc.close();
}
}
downloadUsingStream: Neste método de baixar arquivo de uma URL em Java, estamos usando o método URL openStream
para criar o fluxo de entrada. Em seguida, estamos usando um fluxo de saída de arquivo para ler dados do fluxo de entrada e escrever no arquivo. downloadUsingNIO: Neste método de baixar arquivo de uma URL em Java, estamos criando um canal de bytes do fluxo de dados da URL. Em seguida, usamos o fluxo de saída de arquivo para escrevê-lo no arquivo. Você pode usar qualquer um desses métodos para baixar o arquivo de uma URL em um programa Java. Se você estiver procurando por desempenho, faça uma análise usando ambos os métodos e veja o que atende às suas necessidades.
Você pode verificar mais exemplos de Java IO em nosso Repositório do GitHub.
Source:
https://www.digitalocean.com/community/tutorials/java-download-file-url