微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 关闭BufferedOutputStream还关闭了底层的OutputStream吗?

我通过调用response.getoutputStream()将二进制数据(从数据库提取一个Clob的CSV文件)流式传输到浏览器,并且在复制数据时通常将OutputStream包装在bufferedoutputstream中.

我应该关闭bufferedoutputstream还是关闭底层的OutputStream?

[额外的问题:在这种情况下,我需要使用bufferedoutputstream吗?

解决方法

是的,它关闭它.关于你是否应该关闭它 – 你期望写什么其他的响应流?如果没有,我认为关闭它是很好.如果你没有关闭它,你应该显然是冲洗它 – 但我怀疑你可以为自己弄清楚:)

该行为实际上是继承自FilterOutputStream. FilterOutputStream.close的Javadocs状态:

The close method of FilterOutputStream
calls its flush method,and then calls
the close method of its underlying
output stream.

至于你是否应该缓冲它 – 我不知道这是否定义良好.它可能被掩埋在servlet规范的某个地方 – 甚至可以配置(有时你真的不希望缓冲,但如果你可以缓冲整个响应,这意味着你可以提供更好的错误页面,如果出现问题,ve开始写作).

原文地址:https://www.jb51.cc/java/126516.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐