Закрытие BufferedReader и System.in - PullRequest
6 голосов
/ 20 ноября 2011
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 ]

2 голосов
/ 20 ноября 2011

Похоже, что вам нужно:

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

Оберните это вокруг System.in, прежде чем создавать свой читатель, и тогда все будет хорошо, так как вы не будете делать это, когда выиспользуете FileInputStream.

0 голосов
/ 04 декабря 2014

Если вы просто хотите получить ввод с клавиатуры с помощью System.in, используйте статический BufferedReader, обертывающий InputStreamReader (также обертывающий System.in).Вот так:

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

И is.close ();потребуется до того, как ваше заявление будет прекращено.

...