簡體   English   中英

在Java中關閉最外層的流對象

[英]Closing an outermost stream object in Java

當我寫這樣的東西:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("c:\\test.txt")));
br.close();

關閉最外面的對象(在這種情況下為br )也會自動關閉所有鏈接的對象。

但是,如果仍然有對鏈接對象的引用呢?

像這樣:

FileInputStream fis = new FileInputStream("c:\\test.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
br.close();

在這種情況下,我不希望釋放fis ,因為我需要盡快在其他流中使用它。

因此,可以在此處調用brclose() ,並且仍然可以使用fis嗎?

因此,可以在這里調用br的close(),並且仍然可以使用fis嗎?

沒有!

一旦br包裹了fis ,就不應將fis用作任何其他用途,因為br假設fis是為它而做的,並且僅憑它來完成它所希望的事情。 例如,它可以在構造過程中預先緩沖某些甚至全部fis

fis用作br用途之外的其他任何東西,不僅會產生不可預測的結果,而且很可能會嚴重干擾br的功能。

即使你做的是密切br創建后立即那是相當合理的fis然后被至少部分消耗如果沒有完全消耗掉-它也應該被關閉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM