黑马程序员技术交流社区
标题:
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