小编典典

使用新的BufferedReader的“ java.io.IOException:流已关闭”

java

很多人问这样的问题,但这个问题有些不同。这是代码:

public static BufferedReader reader;    
public static String readString() throws IOException {
            reader = new BufferedReader(new InputStreamReader(System.in));
            String s = reader.readLine();
            reader.close();
            return s;
        }

程序运行时readString方法被多次调用。第二个呼叫原因exception: stream closed。我不明白:为什么会这样呢?每次我们声明新的BufferedReader。所以stream必须也是新的。或不?

如果没有,我应该如何组织我的程序,以便在所有调用之后和程序结束后关闭读者?


阅读 417

收藏
2020-11-30

共1个答案

小编典典

因为System.in是相同Objectpublic final static InputStream in;
System两个方法类) 调用
使用,在一种方法闭会自动关闭System.in用于其它方法。一旦调用完成,您应该BufferedReader外部 关闭该方法(
如我所见publicreadString,这样它最终将关闭底层System.in

2020-11-30