java程序中的流都要统统关闭吗?有没有先后顺序??

2025-02-23 16:35:37
推荐回答(4个)
回答1:

理论上都得关闭,流就是把硬盘上的东西放到内存上,不关就会浪费资源
关当然有先后顺序,我找了点解释:
一般情况下是:先打开的后关闭,后打开的先关闭
另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b
例如处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b
当然完全可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法
如果将节点流关闭以后再关闭处理流,会抛出IO异常

回答2:

如果使用的是jdk7.

自动的资源管理机制
   


在 Java 程序中,处理所有可能的失败路径是困难的,关闭资源也是相对困难的,因此在 Java 7 的实现中,资源管理获得了编译器的帮助,通过定义一个在资源上接口使得编译器能够自动在合适的时候来关闭资源,释放内存等资源。


自动资源管理示例

try(InputStream inFile = new FileInputStream(aFileName); 
    OutputStream outFile = new FileOutputStream(aFileName)) { 
    byte[] buf = new byte[BUF_SIZE]; 
    int readBytes; 
 while ((readBytes = inFile.read(buf)) >= 0) 
   inFile.write(buf, readBytes); 
 }

回答3:

自己程序打开的,要关闭

回答4:

不知道为什么有一种说法 先打开的后关闭 后打开先关闭.但是他们这些人一直在复制粘贴这些,也不解释道理. 我觉得 先关闭外层流的时候 他会自己调用内层流的close方法 只需要关闭最外层一个就可以.如果先从外层开始关 也没有问题,逐一关闭即可.