【问题标题】:"java.io.IOException: Stream closed" with new BufferedReader带有新 BufferedReader 的“java.io.IOException:流已关闭”
【发布时间】:2016-04-05 19:12:35
【问题描述】:

很多人都问过这样的问题,但这个问题有点不同。代码如下:

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

如果不是,我应该如何组织我的程序,以便在所有调用后和我的程序结束后关闭阅读器?

【问题讨论】:

    标签: java stream bufferedreader ioexception


    【解决方案1】:

    因为System.inSystem 类的Object 相同(public final static InputStream in; 两个方法调用 都在使用,关闭一个方法将自动关闭@ 987654325@ 其他方法。一旦你完成调用readString,你应该从外部关闭BufferedReader我可以看到它是public)方法,所以它最终会关闭底层@ 987654329@.

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 2019-06-09
        • 1970-01-01
        • 2022-12-12
        • 1970-01-01
        • 2016-04-28
        • 1970-01-01
        相关资源
        最近更新 更多