Как исправить исключение «IOException: Поток закрыт» с помощью System.in? - PullRequest
3 голосов
/ 19 февраля 2012

Я пишу простую программу, которая читает и обрабатывает содержимое файла, используя BufferedReader.

BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );

System.out.println("Enter the file name to read");
String fileName = br.readLine();
br.close();

// Process file contents

br = new BufferedReader( new InputStreamReader(System.in) );
System.out.println("Enter another file name to read");
fileName = br.readLine();
br.close();

Но когда я вызываю second br.readLine() для чтения другого имени файла, я получаю следующее исключение:

Исключение в потоке "main" java.io.IOException: Поток закрыт

Я не понимаю, как поток System.in можно закрыть.Какую ошибку я делаю и как это исправить?

1 Ответ

7 голосов
/ 19 февраля 2012

Поток закрыт, потому что вы закрываете его с первым

br.close();

, который вы выдаете после прочтения имени файла.

Не закрывайте этот ридер и не создавайте новый для System.in - просто используйте его снова. Для чтения из файла используйте другой файл.

...