“嗨,阿米戈!”

“嗨,艾莉!”

“你今天似乎對自己很滿意。”

“呵,比拉博生病了。”

“所以他沒法給你解釋一堆有趣的、有用的、需要的東西,你該穿上你的大機器人褲了。”

“嗯嗯。我保證自己解決所有問題。Bilaabo 給了我一個鏈接。”

“好,好,那我給你講個有趣的事情。”

“即,如何從 Internet 下載視頻。”

“為了與 Internet 一起工作,Java 有一個叫做 URL 的特殊類。下面是如何使用這個類來下載文件:”

1) 首先,您需要指定您需要的服務器的正確URL。

2)然後需要使用URL與服務器建立連接。

3) 如果是 POST 請求,則發送請求的主體。或者,如果是 GET 請求,則可以跳過此步驟。

4) 最後,讀取服務器響應。

“這是一個簡單的文件下載的樣子:”

例子
URL url = new URL("https://www.google.com.ua/images/srpr/logo11w.png");
URLConnection connection = url.openConnection(); // Establish a connection

// Get an OutputStream in order to write the request to it
OutputStream outputStream = connection.getOutputStream();
outputStream.write(1);
outputStream.flush();

// Get an InputStream in order to read the response from it
InputStream inputStream = connection.getInputStream();
Files.copy(inputStream, new File("c:/google.png").toPath());

“首先,我們通過獲取URLConnection對象與服務器建立連接。”

“然後我們得到需要寫入請求的 OutputStream。然後我們向它寫入一些東西。”

“然後我們得到表示響應的 InputStream 對象,我們從中讀取響應本身。我們使用 Files.copy 方法將發送的數據保存到文件 «c:/google.png»。”

“是的,我明白了。什麼是 «write(1)»?”

“好吧,我包含它是為了向您展示您可以在那裡寫一些東西。實際上您不需要在請求中寫任何東西來下載文件。您可以立即獲得一個 InputStream 並開始從那裡讀取響應。 URL 對象甚至有一個 openStream() 方法,它會立即返回一個 InputStream 對象。但這只適用於 GET 請求。例如:"

例子
URL url = new URL("https://www.google.com.ua/images/srpr/logo11w.png");
InputStream inputStream = url.openStream();
Files.copy(inputStream, new File("c:/google.png").toPath());

“真有意思!沒想到下載一個文件這麼簡單。”

“好吧,通常沒有人會這樣做,因為文件可能很大並且需要很長時間才能下載。”

“有很多框架可以大大簡化文件處理,但我現在還沒準備好談論它們。改天再說吧。”