Class DelegatingOutputStream

java.lang.Object
java.io.OutputStream
org.eclipse.net4j.util.io.DelegatingOutputStream
All Implemented Interfaces:
Closeable, Flushable, AutoCloseable
Direct Known Subclasses:
XOROutputStream

public class DelegatingOutputStream extends OutputStream
This class is the superclass of all classes that filter output streams. These streams sit on top of an already existing output stream (the underlying output stream) which it uses as its basic sink of data, but possibly transforming the data along the way or providing additional functionality.

The class DelegatingOutputStream itself simply overrides all methods of OutputStream with versions that pass all requests to the underlying output stream. Subclasses of DelegatingOutputStream may further override some of these methods as well as provide additional methods and fields.

Note: The only difference to FilterOutputStream is that DelegatingOutputStream does not override OutputStream.write(byte[]) or OutputStream.write(byte[], int, int) but rather exposes the original implementations of InputStream which call write(int) instead of their delegate counterparts.

Author:
Eike Stepper
  • Field Details

    • out

      protected OutputStream out
      The underlying output stream to be filtered.
  • Constructor Details

    • DelegatingOutputStream

      public DelegatingOutputStream(OutputStream out)
      Creates an output stream filter built on top of the specified underlying output stream.
      Parameters:
      out - the underlying output stream to be assigned to the field this.out for later use, or null if this instance is to be created without an underlying stream.
  • Method Details

    • getDelegate

      public OutputStream getDelegate()
    • write

      public void write(int b) throws IOException
      Writes the specified byte to this output stream.

      The write method of DelegatingOutputStream calls the write method of its underlying output stream, that is, it performs out.write(b).

      Implements the abstract write method of OutputStream.

      Specified by:
      write in class OutputStream
      Parameters:
      b - the byte.
      Throws:
      IOException - if an I/O error occurs.
    • flush

      public void flush() throws IOException
      Flushes this output stream and forces any buffered output bytes to be written out to the stream.

      The flush method of DelegatingOutputStream calls the flush method of its underlying output stream.

      Specified by:
      flush in interface Flushable
      Overrides:
      flush in class OutputStream
      Throws:
      IOException - if an I/O error occurs.
      See Also:
    • close

      public void close() throws IOException
      Closes this output stream and releases any system resources associated with the stream.

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

      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class OutputStream
      Throws:
      IOException - if an I/O error occurs.
      See Also: