No, you don't have to.
Since the decorator approach used for streams in Java can build up new streams or reader by attaching them on others this will be automatically be handled by InputStreamReader
implementation.
If you look at its source InputStreamReader.java
you see that:
private final StreamDecoder sd;
public InputStreamReader(InputStream in) {
...
sd = StreamDecoder.forInputStreamReader(in, this, (String)null);
...
}
public void close() throws IOException {
sd.close();
}
So the close operation actually closes the InputStream
underlying the stream reader.
EDIT: I wanna be sure that StreamDecoder
close works also on input stream, stay tuned.
Checked it, in StreamDecoder.java
void implClose() throws IOException {
if (ch != null)
ch.close();
else
in.close();
}
which is called when sd's close is called.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…