黑马程序员技术交流社区
标题:
Io抛异常的问题
[打印本页]
作者:
周亮
时间:
2012-12-30 14:47
标题:
Io抛异常的问题
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//创建多个键盘输入br时,如果把前面的br释放资源,后面的程序在执行时会报java.io.IOException异常,这是为什么?
public class SystemIntest {
public static void main(String[] args) throws IOException {
BufferedReader br1=new BufferedReader(new InputStreamReader(System.in)); //创建第一个输入流对象br1
String line1=null;
while((line1=br1.readLine())!=null){
if("over".equals(line1))
break;
System.out.println(line1);
}
br1.close();//关闭br1,释放资源
BufferedReader br2=new BufferedReader(new InputStreamReader(System.in)); //创建第二个输入流对象br2
String line2=null;
while((line2=br2.readLine())!=null){
if("over".equals(line2))
break;
System.out.println(line2);
}
br2.close();//关闭br2,释放资源
}
}
作者:
黄锦成
时间:
2012-12-30 17:14
InputStream i1 = System.in;
InputStream i2 = System.in;
System.out.println(i1==i2);
System.out.println(i1.equals(i2));
测试了一下,发现返回的是同一个对象。即在一个控制台中,控制台输入流只有一个
你写的代码那里,第一次关闭“br1.close();//关闭br1,释放资源”,其实关闭了System.in,关闭之后,在接下来的代码中,你使用line2=br2.readLine(),此时的System.in早就被你关闭了,就会产生错误。关闭的流不可再用
作者:
刘文超
时间:
2012-12-31 18:41
楼上正解~
作者:
肖志锋
时间:
2013-1-1 21:30
2楼说的对,但是可以看看错误提示的,IOException后面还有一句话的,System closed。很多时候看错误提示就能找到错误的地方的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2