3

I'm writing a simple program that reads and processes file content using a 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();

But when I call second br.readLine() to read another file name, I get the following exception:

Exception in thread "main" java.io.IOException: Stream closed

I don't understand how the System.in stream can be closed. What mistake am I making and how do I fix this?

Pshemo
  • 122,468
  • 25
  • 185
  • 269
nikhil
  • 8,925
  • 21
  • 62
  • 102

1 Answers1

7

The stream is closed because you're closing it with the first

br.close();

that you issue after having read the filename.

Don't close that reader, and don't create a new one for System.in - just re-use that one. Use a different one for reading from the file though.

Mat
  • 202,337
  • 40
  • 393
  • 406
  • Thanks, I'll do that. But is there any way that I can use the same buffered reader? This is just out of curiosity. – nikhil Feb 19 '12 at 13:50