我应该关闭使用 java.nio.file.Files.newInputStream 创建的流吗?



在流教程中,没有提到关闭从Files.newInputStream( path )获得的流。只有一些晦涩难懂:

返回的流是否异步关闭和/或 可中断是高度特定于文件系统提供程序的,因此 未指定。

在这种情况下,什么是"异步"?如果我显式关闭流,或者另一个线程异步关闭流?

您绝对必须关闭获得的InputStream,就像所有其他内容一样。术语"异步关闭"是指在流上的 I/O 操作上阻塞另一个线程时关闭流的能力。

InterruptibleChannel文档中:

实现此接口的通道是异步关闭的:如果线程在可中断通道上的 I/O 操作中被阻塞,则另一个线程可能会调用通道的 close 方法。这将导致被阻塞的线程收到异步关闭异常。

您可以使用新的"尝试资源"选项方便地执行此操作。

try(/*initialize resources here*/)
{
}

它们将在 try 块后自动关闭。 根据需要添加捕获。

相关内容

  • 没有找到相关文章

最新更新