来自URL的InputStream
如何从URL获取InputStream?
例如,我想通过URL wwww.somewebsite.com/a.txt
获取该文件,并通过一个servlet将其作为Java中的InputStream读取。
我试过了
InputStream is = new FileInputStream("wwww.somewebsite.com/a.txt");
但是我得到的是一个错误:
java.io.FileNotFoundException
使用java.net.URL#openStream()
和正确的URL(包括协议!)。 例如
InputStream input = new URL("http://www.somewebsite.com/a.txt").openStream(); // ...
也可以看看:
- 使用java.net.URLConnection来触发和处理HTTP请求
尝试:
final InputStream is = new URL("http://wwww.somewebsite.com/a.txt").openStream();
(a) wwww.somewebsite.com/a.txt
不是“文件URL”。 它实际上不是一个URL。 如果你把http://放在它的前面,它将是一个HTTP URL,这显然是你想要的。
(b) FileInputStream
用于文件,而不是URL。
(c)从任何 URL获得inputstream的方法是通过URL.getConnection().getInputStream(),
或者URL.getConnection().getInputStream(),
这是等价的,但是你可能有其他的理由来获得URLConnection
并且首先使用它。
您的原始代码使用FileInputStream,它用于访问文件系统托pipe的文件。
您使用的构造函数将尝试在当前工作目录的www.somewebsite.com子文件夹(系统属性user.dir的值)中find名为a.txt的文件。 您提供的名称使用File类parsing为文件。
URL对象是解决这个问题的通用方法。 您可以使用URL访问本地文件,也可以使用networking托pipe资源。 除了http://或https://之外,URL类还支持file://协议,所以你很好。