¿Es necesario cerrar cada OutputStream y Writer anidados por separado?

Estoy escribiendo un código:

OutputStream outputStream = new FileOutputStream(createdFile);
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(outputStream);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(gzipOutputStream));

¿Necesito cerrar cada transmisión o escritor como el siguiente?

gzipOutputStream.close();
bw.close();
outputStream.close();

¿O solo estará bien cerrar la última transmisión?

bw.close();

Respuestas a la pregunta(7)

Su respuesta a la pregunta