2013-03-31 34 views
1

你好,我正在尝试读取一个带有间隔的URL提要,并将它作为一个对象存储。但是,当我尝试运行它,它给了我这个错误[致命错误]:1:1:文件过早结束。致命错误:1:1:文件过早结束。阅读url时出错

下面是代码: thisUrl是一个静态的HTTP地址

url = new URL(thisUrl); 
URLstream = url.openStream(); 
ir = new InputStreamReader(URLstream); 
buff = new BufferedReader(ir); 
String xObject = ""; 

while (buff.ready()) { 
    String temp = buff.readLine(); 
    xObject += temp; 
} 

使用流后,我会关闭它

URLstream.close(); 
ir.close(); 
buff.close(); 

回答

0

引述文档的准备的返回类型和值()方法

如果下一个read()保证不会阻塞输入,则返回true,否则返回false。请注意,返回false并不能保证下一次读取会被阻塞。

你的下一个read()可能会阻塞在流上。这并不意味着你已经完成了阅读流。改用它。

String temp = null; 
while ((temp = buff.readLine()) != null) { 
    xObject += temp; 
} 
+0

我试过了你给我的代码。我想感谢您的解决方案。 我通过关闭流,甚至分开声明尝试了几种方法。 为什么我的代码的方式会导致流的阻塞?(我怀疑网络问题,但我不知道我是否对这个问题) – user1771844

+0

没问题。如果您想要详细说明ready()和readLine()如何工作,请随时提出另一个问题。 SO上的人会帮助你。 –

相关问题