下边代码中的FileInputStream 不需要close()吗?

霖vv 发布于 2016/08/24 10:31
阅读 1K+
收藏 0
try{
pp = new Properties();
File pFile = new File(path);
FileInputStream pInStream = new FileInputStream(pFile);
pp.load(pInStream);
cache.put(path, pp);
}
catch (IOException e) {
log.error("初始化配置文件 redis.properties 失败",e);
}
加载中
0
skhuhu
skhuhu
在finally 里面close
0
阿信sxq
阿信sxq
查看了下javadoc,load方法的描述中有一句“此方法返回后,指定的流仍保持打开状态。”所以,你应该是需要关闭的
0
AlanVision
AlanVision
使用IO不关闭流,情况很严重,危害性重大,在finally里面close
0
霖vv
霖vv
团队里写的代码 不close。 哎 
0
zhuoan
zhuoan
如果文件是只读的话,问题不大,但要养成良好的习惯,用完就进行CLOSE,不然出现问题比较难找原因
0
漓江
漓江

这存在内存泄漏,如果使用Jtest做静态检查的话,你会发现的。

--------------------------------------------------------------

try{
    pp = new Properties();
    File pFile = new File(path);
    FileInputStream pInStream = new FileInputStream(pFile);
    pp.load(pInStream);
    cache.put(path, pp);
}catch (IOException e) {
    log.error("初始化配置文件 redis.properties 失败",e);
} finally {

    if(pInStream != null)

   try{

      pInStream.close();
    } catch(Exception e){

     // do nothing.

    }

}

--------------------------------------------------------------

返回顶部
顶部