" java.io.IOException:Stream关闭"使用新的BufferedReader

时间:2016-01-01 00:50:43

标签: java stream bufferedreader ioexception

许多人都这样问过这个问题,但这个问题有点不同。这是代码:

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也必须是新的。或者不是?

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

2 个答案:

答案 0 :(得分:3)

由于System.inObject类的{{1>} public final static InputStream in; 相同,因此两个方法调用正在使用,关闭一种方法将自动关闭System其他方法。一旦你完成调用{{1},你应该从外面,因为我可以看到它System.in )关闭BufferedReader方法所以它最终将关闭基础public

答案 1 :(得分:1)

关闭BufferedReader关闭System.in。你根本不应该关闭它,你不应该继续创建一个新的:你将丢失数据。在整个过程中使用相同的一个。