Java IO - 关闭输入流

amp*_*ent 4 java java-io

如果

FileInputStream fileIS = new FileInputStream(filePathStr);
DataInputStream dataIS = new DataInputStream(fileIS);
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Mar*_*nik 7

如果给出选择,你应该只关闭DataInputStream.更一般地,始终关闭最外层的包装流.结束将向内传播,这是通常确保正确行为的唯一方法.

但是,如果关闭底层FileInputStream,那也就足够了,因为DataInputStream它本身不会获取任何系统资源.

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