【问题标题】:Should I close InputStream passed to IOUtils? [duplicate]我应该关闭传递给 IOUtils 的 InputStream 吗? [复制]
【发布时间】:2014-09-25 12:42:13
【问题描述】:

我要使用apache commons方法:IOUtils.toString(InputStream, "UTF-8");

我应该手动关闭传递的InputStream 还是图书馆足够聪明来关心它?

【问题讨论】:

  • 如果您使用的是 Maven 和良好的 IDE,查看源代码只需简单的鼠标点击...
  • Javadoc 是怎么说的?
  • 如果我是你,如果我打开它,我会自己关闭它。图书馆关闭它没有打开的InputStream 也不关闭它打开的InputStream 对我来说是没有意义的。但正如@Puce 所说,自己查看源代码不会有什么坏处。

标签: java io apache-commons apache-commons-io


【解决方案1】:

正如@Puce 和@Ratshiḓaho Wayne 所指出的, javadoc 中没有任何内容表明您传递给 toString() 方法的输入流将被 API 关闭。

如果 API 支持 reset,则关闭为将字节流转换为字符串而传递的流是没有意义的,因为应用程序可以在其他地方重新读取该流。

这是供您参考的文档。

public static String toString(InputStream input,
              Charset encoding)
                       throws IOException 

使用指定的字符串获取 InputStream 的内容 字符编码。

此方法在内部缓冲输入,因此无需使用 缓冲输入流。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-20
    • 2011-08-07
    • 2012-06-12
    • 2010-12-22
    • 2012-01-13
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    相关资源
    最近更新 更多