Hoy aprenderemos cómo descargar un archivo desde una URL en Java. Podemos utilizar el método openStream()
de java.net.URL
para descargar un archivo desde una URL en un programa Java. Podemos utilizar los canales Java NIO o el flujo de entrada Java IO para leer datos del flujo abierto de la URL y luego guardarlo en un archivo.
Descargar Archivo Java desde URL
Aquí tienes un ejemplo simple de un programa Java que descarga un archivo desde una URL. Muestra ambas formas de descargar un archivo desde una URL en 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: En este método de descarga de archivos Java desde URL, estamos utilizando el método openStream
de URL para crear el flujo de entrada. Luego estamos utilizando un flujo de salida de archivo para leer datos del flujo de entrada y escribirlos en el archivo. downloadUsingNIO: En este método de descarga de archivos desde URL, estamos creando un canal de bytes a partir de los datos del flujo de URL. Luego, utilizamos el flujo de salida de archivo para escribirlo en el archivo. Puedes utilizar cualquiera de estos métodos para descargar el archivo desde una URL en un programa Java. Si buscas rendimiento, realiza un análisis utilizando ambos métodos y ve cuál se adapta a tus necesidades.
Puedes consultar más ejemplos de Java IO en nuestro Repositorio en GitHub.
Source:
https://www.digitalocean.com/community/tutorials/java-download-file-url