关闭流是否会关闭 BufferedReader 源?
从文档中:
流具有 BaseStream.close() 方法并实现 AutoCloseable,但几乎所有流实例在使用后实际上并不需要关闭。通常,只有源是 IO 通道的流(例如 Files.lines(Path,Charset)返回的流)才需要关闭。大多数流由集合、数组或生成函数提供支持,这些函数不需要特殊的资源管理。(如果流确实需要关闭,则可以在 try-with-resources 语句中将其声明为资源。
当我在 a 上创建一个 using 方法时,如下所示,关闭 是否也会关闭 ?Stream<String>
lines()
BufferedReader
Stream
BufferedReader
try (Stream<String> lines = new BufferedReader(new InputStreamReader(process.getInputStream())).lines()) {
// Do stuff
}
// Is the BufferedReader, InputStreamReader and InputStream closed?
我尝试过一些非常快速的测试说不(的领域不是),但是我对下面的句子感到困惑,因为这个例子也是I / O,对吧?in
BufferedReader
null
通常,只有源是 IO 通道的流(例如 Files.lines(Path,Charset)返回的流)才需要关闭。
如果没有,我是否需要关闭这两个实例,还是关闭实例就足够了?BufferedReader
理想情况下,我想从某种方法返回Stream<String>
,而不必担心读者。目前,我已经创建了一个流
装饰器,它也可以关闭读取器,但如果没有必要,那就更容易了。