java - FileInputStream 和关闭

标签 java stream inputstream fileinputstream try-with-resources

在我的代码中,只要需要 FileInputStream 作为参数,我就会这样做:

new obj(new FileInputStream(fileLocation));

因为我没有将 FileInputStream 分配给任何引用变量,所以我没有使用 close() 方法关闭它。

这会导致内存泄漏吗?

不是上面的方法中FileInputStream释放资源吗?

最佳答案

如果没有对您的输入流的引用,它将被垃圾收集并自动关闭流 - 请参见 FileInputStream.finalize() 方法。但是,这不是一个好的编程习惯,因为您不知道何时会发生垃圾回收。所以这可能会导致内存泄漏。

正确且更安全的方法是将 try 与资源 block 一起使用,或者在较旧的 Java 版本中使用 try-catch-finally,您在 finally block 中关闭流 - 我个人喜欢 Apache Commons 的 IOUtils,您不必关心关于 close() 方法抛出的 IOException

关于java - FileInputStream 和关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31832376/

相关文章:

spring-mvc - 如何在 Spring MVC 中处理 IO 流

gradle - 无法让Gradle使用System.in

java - 输入流每字节读取如何工作?

java - 使用 Java Resizer 的粉色/紫色

java - 可以在网络上接收 TCP 流/UDP 数据报吗?

java - 为什么 jmf 不能播放 rtp 流?

node.js - 使用 Node.js 流管道进行超时处理

javascript - 从 Javascript 传递到 Java 时,具有高 Unicode 字符的字符串会损坏

java - 如何禁用XMLEncoder的冗余消除功能以确保POJO完全序列化?

java - 不使用 Websphere Deployment Manager 部署 Web 应用程序