2017-03-04 1179 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个字节的数据,我们必须首先读取所有前面的字节,并且我们不能保证能够“跳转一旦我们阅读了他们,我们又回来了。