6

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

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

在这种情况下,什么是“异步”?如果我明确关闭流或另一个线程异步关闭流?

4

2 回答 2

4

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

InterruptibleChannel文档:

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

于 2015-01-20T15:00:58.023 回答
1

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

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

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

于 2018-10-05T17:03:19.103 回答