java.io.IOException: Attempted read from closed stream.
来源:互联网 发布:淘宝情侣链接是什么 编辑:程序博客网 时间:2024/05/17 06:56
今天写了一个爬虫入门程序,写好运行后却出现了流关闭的问题,开始时是百思不得其解后来我的一个同学给我指出了问题,现在我把它写下了,防止以后再犯这样的错误:
String url = "http://www.baidu.com";
HttpClient httpclient = new DefaultHttpClient();
//Prepare a request object
HttpUriRequest httpget = new HttpGet(url);
BufferedInputStream reader = null;
//Execute the request
try {
//get response object
HttpResponse response = httpclient.execute(httpget);
//if network is wrong,it will recover request
// httpget.getParams().setParameter(HttpRequestParser,new DefaultHttpRequestRetryHandler())
HttpEntity entity = response.getEntity();
//get a return code
int resStatu = response.getStatusLine().getStatusCode();
//to determine whether a network connecion is good
if (resStatu == HttpStatus.SC_OK){ //if resStatu equal to 200,it means connection is good
//get hold of the response entity
HttpEntity entity = response.getEntity();
if ( null != entity ) {
//get html code
html = EntityUtils.toString(entity);
BufferedReader reade = new BufferedReader(new InputStreamReader(entity.getContent(),"UTF-8"));
while((str = reade.readLine()) != null){ <<<在这个地方有错,就会跳到catch{}中了 ....
System.out .println(str);
}
reade.close();
}else {
System.out.println("entity is empty!");
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
System.out .println("visiting " +url+" error!");
e.printStackTrace();
throw e;
}finally{
httpclient.getConnectionManager().shutdown();
}
下面显示的错误:
java.io.IOException: Attempted read from closed stream.
at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:172)
at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:138)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.readLine(BufferedReader.java:317)
at java.io.BufferedReader.readLine(BufferedReader.java:382)
at JustTest.getHtmlByUrl(JustTest.java:66)
at JustTest.main(JustTest.java:109)
Exception in thread "main" java.io.IOException: Attempted read from closed stream.
at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:172)
at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:138)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.readLine(BufferedReader.java:317)
at java.io.BufferedReader.readLine(BufferedReader.java:382)
at JustTest.getHtmlByUrl(Just)
好吧!我终于发现问题了,原来是html = EntityUtils.toString(entity);这句导致了后面的写入文件错误.entity所得到的流是不可重复读取的也就是说所得的到实体只能一次消耗完,不能多次读取,所以在执行html = EntityUtils.toString(entity)后,流就关闭了,就导致后面的读和写显示错误.
- java.io.IOException: Attempted read from closed stream.
- java.io.IOException: Attempted read from closed stream.
- java后台调用SOE时,报异常java.io.IOException: Attempted read from closed stream
- java.io.IOException: Attempted read on closed stream.
- java.io.IOException: Attempted read on closed stream
- java.io.IOException: Attempted read on closed stream.可能原因及解决方案
- 完全转载 java报错Attempted read from closed stream
- java报错Attempted read from closed stream
- 【httpclient】Attempted read from closed stream
- Attempted read from closed stream.问题
- Attempted read from closed stream.的解决方法
- java.io.IOException: Stream closed
- java.io.IOException: Stream closed
- java.io.IOException: Stream closed
- 重现java.io.IOException: Stream closed异常
- 重现java.io.IOException: Stream closed异常
- 重现java.io.IOException: Stream closed异常
- 重现java.io.IOException: Stream closed异常
- [自学问题总结]const 和 static readonly 区别
- DFS-hdu-2821-Pusher
- 商业智能给数据获取带来的局部效益案例
- Android编程习惯
- Java IO学习笔记:概念与原理
- java.io.IOException: Attempted read from closed stream.
- IWorkspaceFactory Create Example创建个人mdb、file_mdb、sde
- js-知识2
- my first Grails application
- 需要检查
- [自学问题总结]extern
- 用C语言编写windows服务程序
- [转] Ubuntu安装搜狗拼音输入法-sogoupinyin
- 学习LINUX心得