gpt4 book ai didi

java - 关闭InputStream是否会关闭与其关联的Channel?

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:35 27 4
gpt4 key购买 nike

如果我从 InputStream 创建一个 Channel,然后关闭 InputStream,是否会关闭关联的 Channel?我是否需要显式关闭关联的Channel?我知道关闭 Channel 会关闭 Stream,但是反过来呢?

try (InputStream ioStream = getInputStream()) {
ReadableByteChannel inputChannel = Channels.newChannel(ioStream);
//do something
}

最佳答案

一般情况下,InputStreamChannel一无所知,因此关闭InputStream无法自动关闭Channel

但是,在 InputStream 关闭后尝试从 Channel 读取数据将会抛出 IOException:

  • channel 必须通过 InputStream.getBytes() 从输入流获取数据
  • 如果输入流已关闭,
  • InputStream.getBytes() 将抛出 IOException
<小时/>

对于 FileInputStream 的特殊情况,Channels.newChannel(ioStream) 调用将返回 FileInputStream.getChannel(),因此在这种特殊情况下,关闭输入流也将关闭 channel 。

关于java - 关闭InputStream是否会关闭与其关联的Channel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60600646/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com