2013-07-18 249 views
2
  1. 我正在使用遺留的java應用程序,在許多文件中,使用套接字和流,其中套接字正在關閉但不是流,這是關閉套接字之前關閉所有流所必需的。因爲我得到「太多打開的文件錯誤」,這是因爲沒有關閉流的錯誤.....關閉套接字是否關閉流?

  2. 關閉套接字會自動關閉流還?

回答

5

Socket Javadoc

關閉此套接字也將關閉套接字的InputStreamOutputStream

所以一般來說,關閉套接字應該足以關閉它創建的兩個流。

「太多的打開的文件錯誤」很可能是由其他原因引起的。

2

關閉其中任何一個都會關閉另外兩個,但是您應該關閉已包裝在套接字上的最外層輸出流(或Writer)。這將關閉輸入流和套接字。如果你自己沒有關閉最外層的輸出流,它將不會被刷新,你將失去數據。您也可以在finally區塊中關閉插槽本身,以確保:實際上缺少finally區塊可能是您問題的原因。