Java Baixar Arquivo de URL

Hoje aprenderemos como baixar um arquivo a partir de uma URL em Java. Podemos utilizar o método openStream() da classe java.net.URL para baixar o arquivo no programa Java. Podemos utilizar os canais Java NIO ou o InputStream Java IO para ler os dados do fluxo aberto da URL e, em seguida, salvá-los no arquivo.

Baixar Arquivo em Java a partir de uma URL

Aqui está um exemplo simples de um programa Java que baixa um arquivo de uma URL. 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 em Java a partir de uma URL, estamos usando o método openStream da URL para criar o fluxo de entrada. Em seguida, usamos um fluxo de saída de arquivo para ler os dados do fluxo de entrada e escrever no arquivo. downloadUsingNIO: Neste método de baixar arquivo em Java a partir de uma URL, estamos criando um canal de bytes a partir dos dados do fluxo da URL. Em seguida, utilizamos o fluxo de saída de arquivo para escrevê-lo no arquivo. Você pode escolher qualquer um desses métodos para baixar o arquivo da URL no programa Java. Se estiver buscando desempenho, faça uma análise usando ambos os métodos e veja qual atende melhor às suas necessidades.

Você pode conferir mais exemplos de IO em Java em nosso Repositório no GitHub.

Source:
https://www.digitalocean.com/community/tutorials/java-download-file-url