繁体   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