Search code examples
javaiobufferedreaderfilereader

Do I need to close() both FileReader and BufferedReader?


I'm reading a local file using a BufferedReader wrapped around a FileReader:

BufferedReader reader = new BufferedReader(new FileReader(fileName));
// read the file
// (error handling snipped)
reader.close();

Do I need to close() the FileReader as well, or will the wrapper handle that? I've seen code where people do something like this:

FileReader fReader = new FileReader(fileName);
BufferedReader bReader = new BufferedReader(fReader);
// read the file
// (error handling snipped)
bReader.close();
fReader.close();

This method is called from a servlet, and I'd like to make sure I don't leave any handles open.


Solution

  • no.

    BufferedReader.close()
    

    closes the stream according to javadoc for BufferedReader and InputStreamReader

    as well as

    FileReader.close()
    

    does.