很多人问这样的问题,但这个问题有些不同。这是代码:
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必须也是新的。或不?
readString
exception: stream closed
BufferedReader
stream
如果没有,我应该如何组织我的程序,以便在所有调用之后和程序结束后关闭读者?
因为System.in是相同Object( public final static InputStream in; 的System两个方法类) 调用 使用,在一种方法闭会自动关闭System.in用于其它方法。一旦调用完成,您应该BufferedReader从 外部 关闭该方法( 如我所见public)readString,这样它最终将关闭底层System.in。
System.in
Object
public final static InputStream in;
System
public