Class CaptureOutputStream

All Implemented Interfaces:
Disposable, Closeable, Flushable, AutoCloseable

public class CaptureOutputStream extends OutputStreamDecorator<OutputStream>
An output stream that captures all transferred bytes of a decorated stream.
Author:
Garret Wilson
  • Constructor Details

    • CaptureOutputStream

      public CaptureOutputStream(OutputStream outputStream)
      Decorates the given output stream.
      Parameters:
      outputStream - The output stream to decorate.
      Throws:
      NullPointerException - if the given stream is null.
  • Method Details

    • getCapturedBytes

      public byte[] getCapturedBytes()
      Returns:
      The current captured data accumulated from transfers, leaving the data to be retrieved again at a future time.
    • getCapturedBytes

      public byte[] getCapturedBytes(boolean clearCapturedBytes)
      Returns all captured bytes accumulated from transfers since the captured bytes were last cleared. This method allows the captured data to be atomically cleared at the same time that data is retrieved so that no data is lost.
      Parameters:
      clearCapturedBytes - Whether the captured data should be cleared after retrieving the data.
      Returns:
      The current captured data accumulated from transfers.
      See Also:
    • clearCapturedBytes

      public void clearCapturedBytes()
      Clears all accumulated captured bytes.
    • write

      public void write(int b) throws IOException
      Writes the specified byte to this output stream. The general contract for write is that one byte is written to the output stream. The byte to be written is the eight low-order bits of the argument b. The 24 high-order bits of b are ignored.

      Subclasses of OutputStream must provide an implementation for this method.

      Overrides:
      write in class OutputStreamDecorator<OutputStream>
      Parameters:
      b - the byte.
      Throws:
      IOException - if an I/O error occurs. In particular, an IOException may be thrown if the output stream has been closed.
    • write

      public void write(byte[] b) throws IOException
      Writes b.length bytes from the specified byte array to this output stream. The general contract for write(b) is that it should have exactly the same effect as the call write(b, 0, b.length).
      Overrides:
      write in class OutputStreamDecorator<OutputStream>
      Parameters:
      b - the data.
      Throws:
      IOException - if an I/O error occurs.
      See Also:
    • write

      public void write(byte[] b, int off, int len) throws IOException
      Writes len bytes from the specified byte array starting at offset off to this output stream. The general contract for write(b, off, len) is that some of the bytes in the array b are written to the output stream in order; element b[off] is the first byte written and b[off+len-1] is the last byte written by this operation.

      The write method of OutputStream calls the write method of one argument on each of the bytes to be written out. Subclasses are encouraged to override this method and provide a more efficient implementation.

      If b is null, a NullPointerException is thrown.

      If off is negative, or len is negative, or off+len is greater than the length of the array b, then an IndexOutOfBoundsException is thrown.

      Overrides:
      write in class OutputStreamDecorator<OutputStream>
      Parameters:
      b - the data.
      off - the start offset in the data.
      len - the number of bytes to write.
      Throws:
      IOException - if an I/O error occurs. In particular, an IOException is thrown if the output stream is closed.