以下尝试块是否相似?两种情况下dataSocket.getOutputStream()
是否都将关闭?
一个)
try (Socket dataSocket = new Socket(...);
OutputStream socketStream = dataSocket.getOutputStream();
BufferedOutputStream outputStream = new BufferedOutputStream(socketStream)
) {.....}
b)
try (Socket dataSocket = new Socket(...);
BufferedOutputStream outputStream = new BufferedOutputStream(dataSocket.getOutputStream())
) {.....}
注意。在b)中没有
dataSocket.getOutputStream()
的显式变量,在a)中有socketStream
。 最佳答案
根据BufferedOutputStream
JavaDoc,
关闭此输出流并释放与该流关联的所有系统资源。
关闭outputStream
将关闭基础输出流。 BufferedOutputStream
的close()方法的源代码中也证明了这一点。
public void close() throws IOException {
try {
flush();
} catch (IOException ignored) {
}
out.close();
}