從 URL 下載 Java 檔案

今天我們將學習如何在Java中從URL下載文件。我們可以使用java.net.URLopenStream()方法在Java程序中從URL下載文件。我們可以使用Java NIO Channels或Java IO InputStream從URL開啟的流中讀取數據,然後保存到文件中。

Java從URL下載文件

這是一個簡單的Java從URL下載文件的示例程序。它展示了在Java中從URL下載文件的兩種方法。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: 在這個Java從URL下載文件的方法中,我們使用URL的openStream方法創建輸入流。然後,我們使用文件輸出流從輸入流讀取數據並寫入文件。downloadUsingNIO: 在這種從URL下載文件的方法中,我們從URL流數據創建字節通道。然後使用文件輸出流將其寫入文件。您可以使用這兩種方法之一在Java程序中從URL下載文件。如果您尋找性能,請通過使用這兩種方法進行分析,看看哪種適合您的需求。

您可以從我們的GitHub存儲庫中查看更多Java IO示例。

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