首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否应该在关闭支持套接字之前关闭Java streams?

是否应该在关闭支持套接字之前关闭Java streams?
EN

Stack Overflow用户
提问于 2012-06-15 08:21:49
回答 4查看 394关注 0票数 1

我有以下代码:

代码语言:javascript
复制
public void disconnect()
{
    running = false;
    if(thread != null)
        thread.interrupt();
    thread = null;

    try
    {
        socket.close();
    }catch(Exception e){e.printStackTrace();}
}

我有一个从流收集输入的BufferedReader和一个通过输出流发送消息的PrintWriter。在我关闭插座之前,BufferedReader和PrintWriter是否应该关闭?让i/o流保持打开状态是不是很糟糕?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-15 08:32:46

根据Java Networking Tutorial的说法

“在关闭套接字本身之前,您应该关闭连接到该套接字的所有流。”

票数 4
EN

Stack Overflow用户

发布于 2012-06-15 09:23:25

您必须关闭输出流,这样它才会被刷新。这将同时关闭套接字和输入流。关闭其中任何一个都会关闭另外两个。您根本不需要关闭输入流。严格地说,为了安全起见,您可能还应该在finally块中关闭套接字本身。

票数 4
EN

Stack Overflow用户

发布于 2012-06-15 08:29:51

如果不关闭BufferedWriter,可能会丢失一些缓冲但未刷新的数据。

还有一种观点认为,你不应该使用PrintWriter,否则要小心,因为它会吞噬IOExceptions。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11043128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档