在流教程中,没有关于从Files.newInputStream( path )
获得关闭流的说法。只有一些模糊不清:
返回的流是否异步关闭和/或 可中断是高度文件系统提供程序特定的因此 未指定。
在这种情况下,什么是“异步”?如果我显式关闭流或另一个线程异步关闭流?
答案 0 :(得分:3)
您必须像所有其他人一样关闭获得的InputStream
。术语“异步可关闭”是指在另一个线程在其上进行I / O操作时被阻塞的能力。
来自InterruptibleChannel
文档:
实现此接口的通道是异步关闭:如果某个线程在可中断通道上的I / O操作中被阻塞,则另一个线程可能会调用该通道的close方法。这将导致被阻塞的线程收到AsynchronousCloseException。
答案 1 :(得分:0)
您可以使用新的尝试使用资源选项方便地进行操作。
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
在try块之后它们将自动关闭。根据需要添加一个渔获。