2017-03-04 1175 views
0

我想知道如何從低層次角度實現java中的InputStream從InputStream獲取URL

假設我編寫了一個用於與網站進行連接的java代碼。

url = new URL("[some url info]"); 
URLConnection urlcon = url.openConnection(); 
InputStream in = urlcon.getInputStream(); 
while((readcount = in.read(buffer)) != -1){ 
     fos.write(buffer,0,readcount); 

我可以知道從InputStream的URL(「在」在上面的代碼塊)通過鑄造直接它的類型,並調用適當的方法如下面?有沒有其他的方法從InputStream獲取URL?

(newtype) new = (newtype) in; 
String Url = new.appropriatemethod(); 

我搜索了InputStream的所有子類,但是我找不到任何具有接口的URL給它的URL。 (https://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html

但是,我認爲InputStream以某種方式獲得URL的信息,從具有該URL的網站接收數據。

我可能對「流」有很大的誤解。

謝謝你閱讀我的排隊。 :)

+1

你爲什麼要打電話,以便獲得url的方法,當你的URL。「」 [某些URL信息]「」 – karman

+0

你說的是web服務? – karman

+0

@karman不,它只是java I/O。我同意從「in」而不是「url」獲取URL似乎很奇怪。但是,我陷入了一種情況,我應該從「in」中獲取URL,並且我想知道它是否可行。 –

回答

2

InputStream只是一個stream不是URLConnection。當你輸入InputStream in = urlcon.getInputStream();。您將獲得輸入流而不是URL連接。當你輸入in.read那麼你正在閱讀流而不是URLConnection

的InputStream是數據的源(無論是一個文件時,網絡 連接等)的參考,我們要處理如下:

  • 我們一般要讀出的數據作爲「原始字節」,然後寫我們自己的代碼來做一些有趣的字節;

  • 我們一般都想按順序讀取數據:也就是說,要獲得第n個字節的數據,我們必須首先讀取所有前面的字節,並且我們不能保證能夠「跳轉一旦我們閱讀了他們,我們又回來了。