天天看点

java 输入流关闭顺序_Java IO流中先关闭输出流还是先关闭输入流?为什么?

流相关e69da5e887aa3231313335323631343130323136353331333363393133资源

流相关资源一般遵循:

1)先开后关,先开的输入流,再开的输出流,通过读取输入流写入输出流中,那么应该先关输出流,再关输入流,但是一般关闭输入输出流操作都是在读写完成后的finally中执行的,所以即使先关输入流,再关输出流也不会任何问题,因为读写操作没有进行了。

2)先关外层,再关内层。如BufferedInputStream包装了一个FileInputStream,那么先

关BufferedInputStream,再关FileInputStream。但要注意的是由于一般处理流持有节点流引用,处理流都会在自己的close方法中去关闭节点流,因此我们只要关闭外层的处理流即可,如果多此一举的关闭节点流反而会报错。如BufferedInputStream包装了FileInputStream,我们只要关闭BufferedInputStream即可

3)只关处理流,不关节点流,原因见上述第二条