如果
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/