gpt4 book ai didi

java - 与 Socket 关联的流

转载 作者:行者123 更新时间:2023-12-01 11:35:29 25 4
gpt4 key购买 nike

当使用 Scanner/PrintWriter 操作这些流时,我们是否需要显式关闭它们,或者关闭套接字,同时关闭 Scanner 和 PrintWriter 对象?

最佳答案

大多数java IO类使用'Decorator ' 包装原始类型的模式。直接关闭socket对象不会关闭Scanner/PrintWriter,但关闭Scanner/Printwrite会将操作级联到底层的raw类型。

如果直接关闭Socket,那么依赖于“Scanner/Printwriter”的代码可能会得到意想不到的结果。

大多数装饰类都提供包装类型方法并级联操作,但最好检查装饰类的源代码。

如果是“PrintWriter”,它会调用 writer 对象上的“close”。

public void close() {
try {
synchronized (lock) {
if (out == null)
return;
out.close();
out = null;
}
}
catch (IOException x) {
trouble = true;
}
}

flush() 不会关闭流,但会确保缓冲区中的所有内容都写入目标。

关于java - 与 Socket 关联的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30035472/

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