Java 缓冲区及;修改输出流

Java 缓冲区及;修改输出流,java,servlets,io,Java,Servlets,Io,有没有办法缓冲OutputStream,在返回之前对其进行修改?以下是我的代码片段: public ServletOutputStream getOutputStream() throws IOException { BufferedOutputStream buffer = new BufferedOutputStream(super.getOutputStream()); // Modify the buffer contents, before it is returned

有没有办法缓冲OutputStream,在返回之前对其进行修改?以下是我的代码片段:

public ServletOutputStream getOutputStream() throws IOException {
    BufferedOutputStream buffer = new BufferedOutputStream(super.getOutputStream());
    // Modify the buffer contents, before it is returned
    return new DelegatingServletOutputStream(buffer);
}
谢谢。

你可以自己写:

此类是过滤输出流的所有类的超类。这些流位于已经存在的输出流(底层输出流)之上,它将该输出流用作其基本数据接收器,但可能会沿途转换数据或提供附加功能


因为@oliholz是一种方法,在这种方法中,您可以“在数据通过时”修改数据


另一种方法是将输出发送到ByteArrayOutputStream,将内容提取到字节数组中,修改字节,最后将它们写入“真实”输出流。

Yeh,ByteArrayOutputStream可能会实现这一目的,但我需要在流完成写入后修改内容。有什么想法吗?流中有两个函数,flush()和close(),这两个函数可以说明这一点,对吗?我想做同样的事情,但当我尝试您的解决方案时,b被追加而不是替换。调试时,我的代码以ByteArrayOutputStream类结束,并执行system.arraycopy,从而将b附加到原始内容中。还有其他想法吗?
    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);