closuresBufferedReader和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); 

我注意到,如果我closures了BufferedReader ,我将无法再从键盘inputinput,因为System.in被closures了。 有反正我可以保持br.close() (我需要这个为了删除一个文件),然后添加更多的input从键盘?

看起来你需要:

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

在制作你的阅读器之前,把它放到System.in中,然后一切都会好的,因为当你使用FileInputStream的时候你不会那么做。

如果你只是想通过System.in从键盘input,请使用静态BufferedReader包装InputStreamReader(也包装System.in)。 喜欢这个:

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

和is.close(); 在您的应用程序终止之前需要。