Java IO——关闭输入流

标签 java java-io

如果

FileInputStream fileIS = new FileInputStream(filePathStr);
DataInputStream dataIS = new DataInputStream(fileIS);

关闭 fileIS 是否会自动关闭 dataIS,因为 dataIS 是传播的 fileIS 还是应该单独关闭 dataIS?

谢谢

最佳答案

如果有选择,您应该只关闭 DataInputStream。更一般地说,总是关闭最外层的包装器流。关闭将向内传播,这是通常确保正确行为的唯一方法。

但是,如果您关闭底层的 FileInputStream,这也足够了,因为 DataInputStream 本身不会获取任何系统资源。

对您的问题最直接的回答:不,关闭底层流不会关闭包装流,但实际上从系统资源泄漏的角度来看这无关紧要。只有底部的流耦合到实际的系统资源。

关于Java IO——关闭输入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12866479/

相关文章:

java - ServerSocketChannel 与 ServerSocket Java

java - Apache httpclient 4.x 302 重定向并关闭 keepalive?

java.lang.UnsupportedOperationException : Can't convert to color: type=0x2 异常

java - Java 1.4 和 Suse 9 的 32 位和 64 位共享库行为

java - 为什么 File.exists() 在多线程环境中表现异常?

java - RandomAccessFile 长度多久更新一次?

java - hadoop java.io.IOException : while running namenode -format on OSX 错误

Java/LibGDX - 跟踪从一个房间到另一个房间收集的元素

java - Properties.load会关闭InputStream吗?

java - 如何使用 java 从 oracle blob 检索 zip 文件?