2010-08-18 26 views
0

如從URL.openStream()創建inputStream;從JAVA的URL對象中讀取數據有什麼用途

  1. 並從中讀取。這些信息的用途是什麼?

  2. 當我們使用URL地址創建一個URL對象時,實際上我們並沒有在我們的java程序和互聯網上的URL之間建立連接,對吧? 由於沒有建立這樣的連接(換句話說,我們分離了2個),我們甚至如何從中讀取信息?換句話說,我們怎麼知道它是什麼樣子?

對不起,關於網絡frosh。 :p

感謝您的任何意見!

回答

3

URL.openStream()確實打開了一個到URL的連接。從the API documentation

打開到此URL的連接並 返回一個InputStream從該連接讀 。這種方法是 簡寫:

 openConnection().getInputStream() 

應該由現在某種形式的連接建立是顯而易見的。連接被設置爲獲取位於該URL的資源的內容。當然,這取決於在URL對象中指定的協議模式 - HTTP或JAR。響應可以從輸入流中讀取爲字節,就像任何其他流一樣。

+0

非常感謝您的迴應! 然後URL和InetAddress有什麼區別?不知何故,我發現他們...? – Yue 2010-08-18 01:32:33

+0

InetAddress是一種URL? (都代表互聯網上的地址,但InetAddress專門用於主機。)? – Yue 2010-08-18 01:34:57

+0

InetAddress類用於表示單個主機(IP地址)。 URL是用戶代表主機上可能存在的許多資源中的任何一個。 – 2010-08-18 01:40:04

2

InetAddress是「example.com」(或99.99.99.99),但URL是「http://example.com/wombats.html」。

InetAddress只是一臺機器的網絡地址,沒有提供有關該機器支持哪些服務或如何連接到它們的任何信息。 (InetAddress類將負責將諸如「example.com」之類的DNS名稱映射到IP地址。)

URL是資源(例如文件)的位置並且通常意味着獲取它的方式。 (URL是統一資源定位符的縮寫。)URL.openStream()方法是(試圖)獲取由URL表示的資源的簡單方法。

當您創建URL對象時,您不建立任何網絡連接。當您(例如)撥打URL.openStream()時建立連接。