有没有办法缓冲一个输出流,在它返回之前修改它?下面是我的代码片段:
public ServletOutputStream getOutputStream() throws IOException {
BufferedOutputStream buffer = new BufferedOutputStream(super.getOutputStream());
// Modify the buffer contents, before it is returned
return new DelegatingServletOutputStream(buffer);
}
谢谢。
2条答案
按热度按时间x6492ojm1#
@oliholz给出的答案是一种方法,在这种方法中,您可以在数据“通过”过滤器流到达目的地时修改数据。
另一种方法是将输出发送到
ByteArrayOutputStream
,将内容提取到字节数组,修改字节,最后将它们写入“真实的的”输出流。或者,您可以扩展
ByteArrayOutputStream
并覆盖其close()
方法,以便在流关闭时执行操作......如果这是您的意思的话;或者,您可以覆盖getBytes
,以便在返回字节之前对其进行修改;或者,您可以覆盖write
方法,以便在写入字节时对其进行修改。g6ll5ycj2#
您可以编写自己的FilterOutputStream: