Baixar arquivo Java a partir de URL

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