java中IO流操作怎样关闭流
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中IO流操作怎样关闭流相关的知识,希望对你有一定的参考价值。
我说的意思是当关闭流时一般都先判断是否为空,如果不为空才进行关闭,例如if(in!=null)tryin.close();catch(IOExection e);此处的in代表输入流。那么当in=null时是什么意思?
如果 in == null,就说明 in这个引用所指向的对象还没有被创建,自然 in.close()也就不可能被执行,而且会报异常。我是这样想的,程序中 如果你先声明变量InputStream(或者其他流类型) in = null;
然后执行其他语句,再 in = new 、、、、
在in new之前其他语句出exception,这时流没有被打开,也就无需关闭,如果不判断if(null != in) 硬要关闭in就出exception
另外你的代码按如下写会更合理:
if(null != in)
try
in.flush();
in.close();
in = null;
catch(IOExection e);
参考技术A 如果 in == null,就说明 in这个引用所指向的对象还没有被创建,自然 in.close()也就不可能被执行,而且会报异常。我是这样想的,程序中 如果你先声明变量
InputStream(或者其他流类型) in = null;
然后执行其他语句,再 in = new 、、、、
在in new之前其他语句出exception,这时流没有被打开,也就无需关闭,如果不判断if(null != in) 硬要关闭in就出exception
另外你的代码按如下写会更合理:
if(null != in)
try
in.flush();
in.close();
in = null;
catch(IOExection e);
参考技术B in=null时的意思就是说流还没有被初始化时就报异常了,此时流为空值。对于空值的流是不能关闭的,否则会出空指针异常。所以之前要判断一下。 参考技术C 调用流的close();方法关闭 参考技术D 有 相关方法关闭 如:FileOutputStream out = new FileOutputStream
操作完成后 out.close
Java IO流中先关闭输出流还是先关闭输入流?为什么?
java中需要手动释放的资源bai常见的有以下两个:
流相du关资zhi源
流相关资源一般遵循:
1)先开后关dao,先开的输入流,再开的输出流,通过读取输入流写入输出流中,那么应该先关输出流,再关输入流,但是一般关闭输入输出流操作都是在读写完成后的finally中执行的,所以即使先关输入流,再关输出流也不会任何问题,因为读写操作没有进行了。
2)先关外层,再关内层。如BufferedInputStream包装了一个FileInputStream,那么先
关BufferedInputStream,再关FileInputStream。但要注意的是由于一般处理流持有节点流引用,处理流都会在自己的close方法中去关闭节点流,因此我们只要关闭外层的处理流即可,如果多此一举的关闭节点流反而会报错。如BufferedInputStream包装了FileInputStream,我们只要关闭BufferedInputStream即可
3)只关处理流,不关节点流,原因见上述第二条
流相关文章参考:http://blog.csdn.net/u012250875/article/details/78341874
jdbc相关资源
Connection,PrepareStatement,ResultSet三个资源。这三个资源的获取顺序是:
先获得一个jdbc连接对象Connection,再通过连接对象获得一个sql预处理对象PrepareStatement,如果是查询的话最后还会通过PrepareStatement对象获取一个结果集ResultSet对象,关闭顺序与获取顺序正好相反。先关ResultSet,再关PrepareStatement,最后关Connection。
以上是关于java中IO流操作怎样关闭流的主要内容,如果未能解决你的问题,请参考以下文章