有没有办法缓冲OutputStream,在返回之前修改它?这是我的代码片段:
public ServletOutputStream getOutputStream() throws IOException {
BufferedOutputStream buffer = new BufferedOutputStream(super.getOutputStream());
// Modify the buffer contents, before it is returned
return new DelegatingServletOutputStream(buffer);
}
感谢。
答案 0 :(得分:2)
您可以自己编写FilterOutputStream:
此类是过滤输出流的所有类的超类。这些流位于已经存在的输出流(基础输出流)之上,它将其用作数据的基本接收器,但可能会沿途转换数据或提供其他功能。
BufferedOutputStream buffer = new BufferedOutputStream(super.getOutputStream());
FilterOutputStream filter = new FilterOutputStream(buffer) {
@Override
public void write( int b ) throws IOException {
// modify b
out.write( b );
}
};
return new DelegatingServletOutputStream(filter);
答案 1 :(得分:2)
由于@oliholz是一种方法,您可以在其中“修复”数据。
另一种方法是将输出发送到ByteArrayOutputStream,将内容提取到字节数组,修改字节,最后将它们写入“实际”输出流。