在流教程中,没有提到关闭从Files.newInputStream( path )
. 只有一些晦涩的:
返回的流是否可异步关闭和/或可中断是高度特定于文件系统提供程序的,因此未指定。
在这种情况下,什么是“异步”?如果我明确关闭流或另一个线程异步关闭流?
InputStream
就像所有其他人一样,您绝对必须关闭获得的。术语“异步关闭”是指在另一个线程在其上的 I/O 操作上被阻塞时关闭流的能力。
实现此接口的通道是可异步关闭的:如果线程在可中断通道上的 I/O 操作中被阻塞,则另一个线程可能会调用通道的关闭方法。这将导致被阻塞的线程接收到 AsynchronousCloseException。
您可以使用新的资源尝试选项方便地执行此操作。
try(/*initialize resources here*/)
{
}
它们将在 try 块之后自动关闭。根据需要添加捕获。