❶ 如何處理java的InputStream的close
調試一下:3 to 4,當代碼執行到3時圖1注意到in的fd與buffered的in,說明buffered與in都是打開的,然後執行3,到4時圖2注意到in的fd於buffered的in, 說明buffered與in都是關閉的,那麼in.close就是多餘的了 再看如果不執行3,執行4和5,當執行到4時,與圖1一致,執行到5時 fd為-1,buffered為發生變化,故此時之關閉了in,而buffered並為關閉,之後就又是圖2了 所以,我們只要關閉buffer流就ok了,除非你是一個多疑的人,並且對jvm嚴重的不滿,在或者你十分喜歡打字,並不在乎代碼的執行效率。 接下來,看一下一下的代碼: BufferedReader buffered = null; try { buffered = new BufferedReader(new InputStreamReader( new FileInputStream("/home/skeeey/test/prop"))); } catch (FileNotFoundException e) { // TODO } finally { try { buffered.close(); } catch (IOException e) { // TODO Auto-generated catch blo } } TMD討厭的IOException,關閉個流還拋異常,受不了,讓我的代碼怪異無比... .... try { if (input != null) { input.close(); } } catch (IOException ioe) { // ignore } kao,他忽略了,不過第2行的寫法,很好,原因嗎... ...,我就不說了 :-) 其實還可以改進,給一個連接,討論的不錯:
❷ Java中 inputstream 需要close() 嗎 該怎麼處理 。我在後面close()之後就跑出IO異常了
fileinput.close()不應該在while內容。
while循環在讀取fileinput,在循環內部close()之後,下一次循環調用read時,肯定就出錯了。
❸ java的close方法
書上說的是InputStream和OutputStream這兩個類的close()方法什麼也不做。
這么做是為了讓開發者自己去繼承這兩個類,並覆蓋close()方法。如果不覆蓋,則默認什麼也不做。這使得程序員可以在close方法中做自己需要的操作。比如刪除臨時文件之類的。。。
JAVA中,所有的輸入流都是InputStream的子類的對象,所有的輸出流都是OutputStream的子類的對象。因為InputStream和OutputStream都是抽象類,它們不可能被實例化。
JDK中有一些常用的類已經繼承了這兩個類。比如FileInputStream和FileOutputStream,這兩個子類的close()方法都有執行操作的。
順便說一句,麥兄,你什麼時候出來教訓一下羅伊阿,你看他昨天在火箭面前多麼囂張!