关闭BufferedReader和System.in

时间:2011-11-20 19:16:34

标签: java input bufferedreader system.in

Reader rdr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(rdr);
String s;
s = br.readLine();
br.close();
Scanner sc = new Scanner(System.in);
s = sc.nextLine();
System.out.print(s);

我注意到如果我关闭BufferedReader,我将无法再从键盘插入输入,因为System.in以某种方式关闭。无论如何,我可以保留br.close()(我需要它来删除文件),然后从键盘添加更多输入?

2 个答案:

答案 0 :(得分:2)

看起来你需要:

http://commons.apache.org/io/apidocs/org/apache/commons/io/input/CloseShieldInputStream.html

在制作阅读器之前将其包装在System.in周围,然后一切都会好起来,因为当你使用FileInputStream时你不会这样做。

答案 1 :(得分:0)

如果您只想通过System.in从键盘获取输入,请使用包装InputStreamReader的静态BufferedReader(也包装System.in)。 像这样:

 Public BufferedReader is = new BufferedReader(new InputStreamReader(System.in));

and is.close();在申请被终止之前需要。