Java中檔案流的關閉問題

2021-08-09 02:17:07 字數 558 閱讀 9733

這裡以如下所示的**為例

inputstreamreader in = new inputstreamreader(new fileinputstream(file));

bufferedreader read = new bufferedreader(in);

當我們讀寫完畢的時候,該如何關閉資料流呢?我在網上找了乙個部落格,裡面提到資料流可分為節點流和處理流

由此,**裡的in和read都是乙個處理流,in的建構函式裡的引數是乙個節點流。當我們的**如上,我們該怎樣關閉資料流呢?其順序如何?

一般而言,先建立的資料流後關閉,後建立的資料流先關閉。在上述**中,順序即是先關閉read,而後在關閉in。這樣子的順序是沒有問題的。但是如果順序反過來的話,就會丟擲異常。

除此之外,經過試驗,當我們僅僅關閉這兩者中的乙個時(不論是只關閉read,還是只關閉in),這兩個資料流都將關閉。關閉read之所以能關閉in,是因為在關閉read時,其所呼叫的函式已經關閉了其依賴的in;而關閉in導致read的關閉,原因可能是read賴以存在的基礎沒了。

java中檔案流

抽象類 節點流 檔案流 緩衝流 處理流的一種,可以提公升檔案操作效率 inputstream 位元組 fileinputstream bufferedinputstream outputstream 位元組 fileoutstream bufferedoutputstream flush reade...

檔案流關閉順序問題

情景 將一張大小為1.5kb的影象檔案從乙個資料夾移動到另乙個資料夾 問題目標資料夾下對應檔案大小為0kb 存在問題的 簡化版 file file newfile uri fileoutputstream fos newfileoutputstream bufferedoutputstream bo...

04 Python中檔案流的關閉

目錄 close 關閉檔案流 with語句 上下文管理器 由於檔案底層是由作業系統控制,所以我們開啟的檔案物件必須顯式呼叫 close 方法 關閉檔案物件。當呼叫 close 方法時,首先會把緩衝區資料寫入檔案 也可以直接呼叫 flush 方法 再關閉檔案,釋放檔案物件。為了確保開啟的檔案物件正常關...