Do I need to close an InputStream in Java?

My code is:

InputStream confFile=classLoader.getResourceAsStream("myconffile.properties");

In docs:

The close method of InputStream does nothing.

Does it mean that I don't need close InputStream?


Solution 1:

You do need to close the input Stream, because the stream returned by the method you mention is actually FileInputStream or some other subclass of InputStream that holds a handle for a file. If you do not close this stream you have resource leakage.

Solution 2:

No, it does not mean that - because InputStream is an abstract class, and getResourceAsStream() returns a concrete subclass whose close() method does something - most importantly free a file handle.