我们是否需要关闭在 HttpServletResponseWrapper 中创建的 OutputStream

Whether it is necessary for us to close OutputStream created in HttpServletResponseWrapper

我想实现一个 java 接口 HttpServletResponseWrapper 我在 Whosebug 中得到了答案 (Looking for an example for inserting content into the response using a servlet filter) 在这个答案中我们创建了一个ByteArrayPrintWriter,但是在这段代码中为什么我们不关闭ByteArrayPrintWriter流,这样有什么问题吗?感谢您的帮助。

在这种特殊情况下,没有必要关闭 ByteArrayOutputStream,因为我们知道内部实现没有缓冲区或任何需要 close() 调用的东西。字节直接写入支持数组,关闭是 NO-OP.

/**
 * Closing a <tt>ByteArrayOutputStream</tt> has no effect. The methods in
 * this class can be called after the stream has been closed without
 * generating an <tt>IOException</tt>.
 */
public void close() throws IOException {
}

为了保持一致性,仍然调用 close() 可能是个好主意,但这是您的选择。哪种方式都可以。