推 slalala:要不要補一段 當c close之後 a與b是否 closed? 10/11 21:01
Yes, they are closed.
s.isClosed(); // returns false
c.close();
s.isClosed(); // returns true
char[] bc = new char[2048];
b.read(bc); // 產生 java.io.IOException: Stream closed
byte[] bb = new byte[2048];
a.read(bb); // 產生 nulljava.net.SocketException: socket closed
這種自動 close 上層串流是程式設計師之間的慣例嗎?
如果自動 close 是慣例,為何範例仍加上 s.close(); ?
※ 編輯: kikiapple 來自: 220.133.0.171 (10/11 22:04)
推 PsMonkey:不是設計師之間的慣例,是 class 設計的想法吧? 10/11 22:06
推 slalala:以資料庫連線比較好懂 沒close就一個使用者卡在那邊 10/11 22:08
→ kikiapple:可以理解是要確保串流有關閉,可是書上的例子讓我迷惑了 10/11 22:17
→ kikiapple:要不就四個都close,卻只close c跟s? 10/11 22:19
推 svenlee:你可以去看看Socket.close()的原始碼發生了什麼事 10/15 22:29