Class AccessibleByteArrayOutputStream

java.lang.Object
java.io.OutputStream
java.io.ByteArrayOutputStream
org.apache.derby.iapi.services.io.AccessibleByteArrayOutputStream
All Implemented Interfaces:
Closeable, Flushable, AutoCloseable

public class AccessibleByteArrayOutputStream extends ByteArrayOutputStream
This allows us to get to the byte array to go back and edit contents or get the array without having a copy made.

Since a copy is not made, users must be careful that no more writes are made to the stream if the array reference is handed off.

Users of this must make the modifications *before* the next write is done, and then release their hold on the array.

  • Constructor Details

    • AccessibleByteArrayOutputStream

      public AccessibleByteArrayOutputStream()
    • AccessibleByteArrayOutputStream

      public AccessibleByteArrayOutputStream(int size)
  • Method Details

    • getInternalByteArray

      public byte[] getInternalByteArray()
      The caller promises to set their variable to null before any other calls to write to this stream are made. Or promises to throw away references to the stream before passing the array reference out of its control.
    • readFrom

      public void readFrom(InputStream in) throws IOException
      Read the complete contents of the passed input stream into this byte array.
      Throws:
      IOException
    • getInputStream

      public InputStream getInputStream()
      Return an InputStream that wraps the valid byte array. Note that no copy is made of the byte array from the input stream, it is up to the caller to ensure the correct co-ordination.
    • copyStream

      public static InputStream copyStream(InputStream in, int bufferSize) throws IOException
      Copy an InputStream into an array of bytes and return an InputStream against those bytes. The input stream is copied until EOF is returned. This is useful to provide streams to applications in order to isolate them from Derby's internals.
      Parameters:
      in - InputStream to be copied
      bufferSize - Initial size of the byte array
      Returns:
      InputStream against the raw data.
      Throws:
      IOException - Error reading the stream