黑马程序员技术交流社区

标题: java中IO流操作关闭流的问题 [打印本页]

作者: 张强1    时间: 2013-7-25 21:43
标题: java中IO流操作关闭流的问题
本帖最后由 杜光 于 2013-7-27 14:56 编辑

如果 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){}; }
作者: 杨增坤    时间: 2013-7-26 12:33
你这样写没错,因为finally{}中是关闭资源的,流操作的也是一个资源,可以在关闭之间判断一下也行,如果为空,则说明前面没有实例化流或者是中途出现了异常,则不关闭,如果不为空的话,则关闭,我感觉这样符合正常的思考。!
作者: 李江    时间: 2013-7-26 14:18
try{           in.flush();           in.close();           in = null;      }    in已经close了,你为什么还 in = null; ?
作者: lljwdbklb    时间: 2013-7-26 15:34
graspDN 发表于 1 小时前
try{           in.flush();           in.close();           in = null;      }    in已经close了,你为什么还 in...

这样做可以让别人清晰知道 这个操作已经结束了
作者: 黑马陈凯    时间: 2013-7-27 11:14
in=null时的意思就是说流还没有被初始化时就报异常了,此时流为空值。对于空值的流是不能关闭的,否则会出空指针异常。所以之前要判断一下。有 相关方法关闭 如:FileOutputStream out = new FileOutputStream
操作完成后  out.close




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2