Java中巢狀的IO流關閉的問題

2021-08-04 07:56:33 字數 405 閱讀 7384

先看一段**:

fileoutputstream out1 = new fileoutputstream("d:\\singleton.txt");

objectoutputstream out2 = new objectoutputstream(out1);

out1.close();//是否需要關閉內層的io流?

out2.close();

考慮一下,像這樣的巢狀io流,是否應該從內到外依次關閉呢?

答案是不需要!這些io類都是jdk自帶的,呼叫了最外層的close方法,其實是一層一層向內呼叫了最內層的io類的close方法,這也就是裝飾者模式。

當然你肯定想問,為什麼我之前自內向外逐層關閉也不會丟擲異常?

因為就算你對某個流重複關閉多次,也不會丟擲異常。

java優雅關閉io流

教科書關閉的方法是每個都需要判斷是否為空,每個都呼叫close。而且每個都需要在自己的try catch裡面呼叫 如下圖inputstream is null inputstreamreader isr null bufferedreader read null try finally catch ...

java中的常用IO流

輸入流inputstream 只能從中讀取位元組資料,而不能向其寫出資料 輸出流outputstream 只能向其寫入位元組資料,而不能從中讀取資料 輸入流inputstream 1.dataoutputstream建立乙個新的資料輸出流,將資料寫入指定基礎輸出流。2.printstream是乙個位...

Java中的IO流之字元流

看完了位元組流 接下來我們來了解一下字元流 字元流字元流是可以直接讀寫字元的io流,用字元流來讀取字元時,先讀取到位元組資料,然後轉為字元。寫出字元時,需要把字元轉為位元組再寫出。還是上 吧 filereader filereader 類中的 read 方法可以按照字元大小讀取 這樣就把文字中的文字...