我有以下代码:
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流保持打开状态是不是很糟糕?
发布于 2012-06-15 08:32:46
根据Java Networking Tutorial的说法
“在关闭套接字本身之前,您应该关闭连接到该套接字的所有流。”
发布于 2012-06-15 09:23:25
您必须关闭输出流,这样它才会被刷新。这将同时关闭套接字和输入流。关闭其中任何一个都会关闭另外两个。您根本不需要关闭输入流。严格地说,为了安全起见,您可能还应该在finally块中关闭套接字本身。
发布于 2012-06-15 08:29:51
如果不关闭BufferedWriter,可能会丢失一些缓冲但未刷新的数据。
还有一种观点认为,你不应该使用PrintWriter,否则要小心,因为它会吞噬IOExceptions。
https://stackoverflow.com/questions/11043128
复制相似问题