java中io流,不为null时关闭,但是我老感觉如果是读了一半时也是不为空啊,怎么解释

JAVA POI关闭Workbook

POI操作中,最近遇到了没有关闭Workbook而导致无法删除对应的文件,以下是关闭的方法。

jar包:poi-3.8.jar
复制代码

 File f = new File("/path/to/excel/file");
 Workbook wb = null;

 NPOIFSFileSystem npoifs = null;
 OPCPackage pkg = null;
 try {
   npoifs = new NPOIFSFileSystem(f);
   wb = WorkbookFactory.create(npoifs);
 } catch(OfficeXmlFileException ofe) {
   pkg = OPCPackage.open(f);
   wb = WorkbookFactory.create(pkg);
 }


 if (npoifs != null) { npoifs.close(); }
 if (pkg != null) { pkg.close(); }

复制代码

作者:ccc
出处:http://www.cnblogs.com/chenchaochao/
本文版权归作者和博客园共有,欢迎转载,但必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!

疑惑:java中io流,不为null时关闭,但是我老感觉如果是读了一半时也是不为空啊,怎么解释

try{
//read & write
}catch(XXXException e){
//异常处理
}finally{
if(io != null){
io.close();
}
}

一般将关闭连接,关闭io等操作放在finally,确保一定会被执行。

不为null时关闭,这个是因为,当io==null时,执行io.close()会发生空指针异常。

只有io!=null,才能执行io.close()操作。

同样,平时用于判断一个对象是否为空也是需要先判断对象是否为null
如:if(str != null && str.trim().length > 0){//do something…}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值