java流关闭问题

代码如下

DigestUtils.md5Hex(new FileInputStream(path));

new FileInputStream会启动个流,这个流需要关闭吗?
如果需要关闭,代码编程这样

InputStream inputStream = null;
String md5Hex = null;
try {
  inputStream = new FileInputStream(docPath);
  md5Hex = DigestUtils.md5Hex(inputStream);
} catch (FileNotFoundException e1) {
  e1.printStackTrace();
} catch (IOException e) {
  e.printStackTrace();
} finally {
  if (inputStream != null) {
    try {
      inputStream.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

我还发现
DigestUtils.md5Hex执行之之前inputStream.available();有值,执行后inputStream.available();的值变为0,是不是inputStream.available();的值为0就不需要关闭流

阅读 2.3k
1 个回答

请用java 7的try-resource语法:

try(InputStream inputStream = new FileInputStream(docPath)){
    String md5Hex = DigestUtils.md5Hex(inputStream);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题