我们是否需要显式关闭在方法参数中作为匿名 类 传递的 Streams 或 Readers?
Do we need to explicitly close Streams or Readers passed as anonymous classes in method parameters?
transformer = factory.newTransformer(new StreamSource(xslReader));
此外,是否需要明确关闭 Reader 和 Writer 类?如果这里传递了一个 InputStream 来代替 StreamSource 会怎么样
BufferedReader br = new BufferedReader(new InputStream("file.txt"));
不,您通常不需要关闭作为参数传递给您的方法的内容,除非您受合同约束这样做。
获得 Closeable
实例的人很可能也可以关闭它。
是的,您应该关闭声明为 Closeable
的内容,以及您自己实例化的内容,以防止资源泄漏。可关闭包装器(读取器、写入器、缓冲区等)在它们自身关闭时关闭它们的基础数据源,因此在您的(修改后的)示例中
var breader = new BufferedReader(new InputStreamReader(new FileInputStream("myFile")))
breader.close();
关闭 breader
将级联关闭操作,首先关闭 BufferedReader
,然后关闭 InputStreamReader
,最后关闭 FileInputStream
,释放文件描述符并通知您的操作系统您已完成该文件的处理。
transformer = factory.newTransformer(new StreamSource(xslReader));
此外,是否需要明确关闭 Reader 和 Writer 类?如果这里传递了一个 InputStream 来代替 StreamSource 会怎么样
BufferedReader br = new BufferedReader(new InputStream("file.txt"));
不,您通常不需要关闭作为参数传递给您的方法的内容,除非您受合同约束这样做。
获得 Closeable
实例的人很可能也可以关闭它。
是的,您应该关闭声明为 Closeable
的内容,以及您自己实例化的内容,以防止资源泄漏。可关闭包装器(读取器、写入器、缓冲区等)在它们自身关闭时关闭它们的基础数据源,因此在您的(修改后的)示例中
var breader = new BufferedReader(new InputStreamReader(new FileInputStream("myFile")))
breader.close();
关闭 breader
将级联关闭操作,首先关闭 BufferedReader
,然后关闭 InputStreamReader
,最后关闭 FileInputStream
,释放文件描述符并通知您的操作系统您已完成该文件的处理。