看看我下面的一段代码public class Test1 { public static void main(String[] args) throws IOException {
for (int i = 0; i < 5; i++) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String readLine = br.readLine();
System.out.println(readLine);
br.close();
}
}
}每次我关闭一个流,在下次循环时再新建一个流,这样为什么会报出“流已关闭”的错误??求大神解答。
for (int i = 0; i < 5; i++) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String readLine = br.readLine();
System.out.println(readLine);
br.close();
}
}
}每次我关闭一个流,在下次循环时再新建一个流,这样为什么会报出“流已关闭”的错误??求大神解答。
BufferedReader br = null;
for (int i = 0; i < 5; i++) {
br = new BufferedReader(new InputStreamReader(
System.in));
String readLine = br.readLine();
System.out.println(readLine);
}
br.close();
}
你可以试试这个
3楼的意思我可以理解成这样两点吗:
1.流的关闭是级联的,也就是如果外层的BufferedReader这个流关闭了,那么它的内层流InputStream(System.in)也要被同时关闭;
2.System.in这个流输入源关闭之后再次用new InputStream(System.in)就打不开了??请三楼赐教!
public class Test1 { public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for (int i = 0; i < 5; i++) { String readLine = br.readLine(); System.out.println(readLine); } } }
能给我解释下为什么重新new一个流也不行的呢,最好能用形象的理解方式,确实是不理解.
这个流被关闭了。你new 多少个BufferedReader有什么用。我上面就说了这个System.in是System类被加载的时候就分配好的final变量。所以你System.in已经被关闭了。你外层的流在怎么new也是无用,因为底层的流被关闭了。
继续追问,3楼别烦我哈。我能把System.in看成还在InputStream更里面的一层流,连接计算机输入设备的一种类流。(BufferedReader是处理流,InputStream是节点流,然后System.in是更进的一层流)