java 封装流关闭的疑问

BufferedWriter writer = null;
try {
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath), "UTF-8"));
writer.write("

"
+ context);
writer.flush();
logger.debug("写文件成功,[filePath=" + filePath + "]");
} finally {
if (writer != null) {
writer.close();
}
}

为什么这段代码,只用writer.close();就把流关闭了,
new OutputStreamWriter(new FileOutputStream(filePath), "UTF-8")这些new出来的流对象为什么不用关闭?