Class CaptureOutputStream

  • All Implemented Interfaces:
    Disposable, java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable

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

      • CaptureOutputStream

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

      • 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()
      • clearCapturedBytes

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

        public void write​(int b)
                   throws java.io.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<java.io.OutputStream>
        Parameters:
        b - the byte.
        Throws:
        java.io.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 java.io.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<java.io.OutputStream>
        Parameters:
        b - the data.
        Throws:
        java.io.IOException - if an I/O error occurs.
        See Also:
        OutputStream.write(byte[], int, int)
      • write

        public void write​(byte[] b,
                          int off,
                          int len)
                   throws java.io.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<java.io.OutputStream>
        Parameters:
        b - the data.
        off - the start offset in the data.
        len - the number of bytes to write.
        Throws:
        java.io.IOException - if an I/O error occurs. In particular, an IOException is thrown if the output stream is closed.