gpt4 book ai didi

java - 隐式和显式可关闭对象的尝试行为

转载 作者:行者123 更新时间:2023-12-02 05:53:32 24 4
gpt4 key购买 nike

以下 try-with block 是否相似?在这两种情况下,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,

Closes this output stream and releases any system resources associated with the stream.

关闭outputStream将关闭底层输出流。 BufferedOutputStream 的 close() 方法的源代码也证明了这一点。

public void close() throws IOException {
try {
flush();
} catch (IOException ignored) {
}
out.close();
}

关于java - 隐式和显式可关闭对象的尝试行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23324033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com