[英]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 ,因為我需要盡快在其他流中使用它。
因此,可以在此處調用br的close() ,並且仍然可以使用fis嗎?
因此,可以在這里調用br的close(),並且仍然可以使用fis嗎?
沒有!
一旦br
包裹了fis
,就不應將fis
用作任何其他用途,因為br
假設fis
是為它而做的,並且僅憑它來完成它所希望的事情。 例如,它可以在構造過程中預先緩沖某些甚至全部fis
。
將fis
用作br
用途之外的其他任何東西,不僅會產生不可預測的結果,而且很可能會嚴重干擾br
的功能。
即使你做的是密切br
創建后立即那是相當合理的fis
然后被至少部分消耗如果沒有完全消耗掉-它也應該被關閉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.