关闭套接字会关闭流吗?

Kar*_*hik 4 java sockets inputstream outputstream stream

  1. 我正在使用遗留的Java应用程序,在许多文件中,使用套接字和流,其中套接字正在关闭而不是流,这是在关闭套接字之前关闭所有流所必需的.因为我收到"太多的打开文件错误",这个错误是因为没有关闭流.....

  2. 关闭套接字会自动关闭流吗?

mth*_*ers 8

来自SocketJavadoc:

关闭此套接字也将关闭套接字InputStreamOutputStream.

所以一般来说,关闭套接字应该足以关闭它创建的两个流.

您的"太多打开文件错误"很可能是由其他原因造成的.


use*_*421 5

关闭其中任何一个都会关闭另外两个,但您应该关闭Writer包裹在套接字上的最外层输出流(或 )。这会关闭输入流和套接字。如果您自己不关闭最外层的输出流,它就不会被刷新,因此如果堆栈中有缓冲的输出流或写入器,您可能会丢失数据。您还可以在块中关闭套接字本身,finally以确保:事实上,缺少finally块很可能是问题的原因。