“嗨,阿米戈!”
“嗨,艾莉!”
“你今天似乎對自己很滿意。”
“呵,比拉博生病了。”
“所以他沒法給你解釋一堆有趣的、有用的、需要的東西,你該穿上你的大機器人褲了。”
“嗯嗯。我保證自己解決所有問題。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());
“真有意思!沒想到下載一個文件這麼簡單。”
“好吧,通常沒有人會這樣做,因為文件可能很大並且需要很長時間才能下載。”
“有很多框架可以大大簡化文件處理,但我現在還沒準備好談論它們。改天再說吧。”
GO TO FULL VERSION