while(true) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(br.readLine());
br.close(); // 這裡關閉了 System.in
}
第二次迴圈 readLine() 拋出 IOException: Stream closed。
BufferedReader 為裝飾模式,關閉外層流會級聯關閉內層流(System.in)。System.in 為進程唯一標準輸入,關閉後無法重新開啟。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while(true) {
String line = br.readLine();
if (line == null) break; // EOF (Ctrl+D / Ctrl+Z)
System.out.println(line);
}
// 程式結束前才 close(或根本不 close,JVM 退出自動回收)
br.close();
System.in/out/err)全程只開啟/關閉一次。BufferedReader 實例複用,勿在迴圈中重建與關閉。