org.apache.derby.iapi.services.io
Class DynamicByteArrayOutputStream

java.lang.Object
  extended byjava.io.OutputStream
      extended byorg.apache.derby.iapi.services.io.DynamicByteArrayOutputStream

public class DynamicByteArrayOutputStream
extends java.io.OutputStream

A DynamicByteArrayOutputStream allows writing to a dynamically resizable array of bytes. In addition to dynamic resizing, this extension allows the user of this class to have more control over the position of the stream and can get a direct reference of the array.


Field Summary
private  int beginPosition
           
private  byte[] buf
           
private static int INITIAL_SIZE
           
private  int position
           
private  int used
           
 
Constructor Summary
DynamicByteArrayOutputStream()
           
DynamicByteArrayOutputStream(byte[] data)
           
DynamicByteArrayOutputStream(DynamicByteArrayOutputStream toBeCloned)
           
DynamicByteArrayOutputStream(int size)
           
 
Method Summary
 void close()
           
 void discardLeft(int amountToShrinkBy)
          Shrink the buffer left by the amount given.
private  void expandBuffer(int minExtension)
          Expand the buffer by at least the number of bytes requested in minExtension.
 int getBeginPosition()
          Get the current position in the stream
 byte[] getByteArray()
          Get a reference to the byte array stored in the byte array output stream.
 int getPosition()
          Get the current position in the stream
 int getUsed()
          Get the number of bytes that was used.
 void reset()
          Reset the stream for reuse
 void setBeginPosition(int newBeginPosition)
          Set the begin position of the stream pointer.
 void setPosition(int newPosition)
          Set the position of the stream pointer.
 void write(byte[] b, int off, int len)
           
 void write(int b)
           
(package private)  void writeCompleteStream(java.io.InputStream dataIn, int len)
           
 
Methods inherited from class java.io.OutputStream
flush, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

INITIAL_SIZE

private static int INITIAL_SIZE

buf

private byte[] buf

position

private int position

used

private int used

beginPosition

private int beginPosition
Constructor Detail

DynamicByteArrayOutputStream

public DynamicByteArrayOutputStream()

DynamicByteArrayOutputStream

public DynamicByteArrayOutputStream(int size)

DynamicByteArrayOutputStream

public DynamicByteArrayOutputStream(byte[] data)

DynamicByteArrayOutputStream

public DynamicByteArrayOutputStream(DynamicByteArrayOutputStream toBeCloned)
Method Detail

write

public void write(int b)

write

public void write(byte[] b,
                  int off,
                  int len)

writeCompleteStream

void writeCompleteStream(java.io.InputStream dataIn,
                         int len)
                   throws java.io.IOException
Throws:
java.io.IOException

close

public void close()

reset

public void reset()
Reset the stream for reuse


getByteArray

public byte[] getByteArray()
Get a reference to the byte array stored in the byte array output stream. Note that the byte array may be longer that getPosition(). Bytes beyond and including the current poistion are invalid.


getUsed

public int getUsed()
Get the number of bytes that was used.


getPosition

public int getPosition()
Get the current position in the stream


getBeginPosition

public int getBeginPosition()
Get the current position in the stream


setPosition

public void setPosition(int newPosition)
Set the position of the stream pointer. It is up to the caller to make sure the stream has no gap of garbage in it or useful information is not left out at the end because the stream does not remember anything about the previous position.


setBeginPosition

public void setBeginPosition(int newBeginPosition)
Set the begin position of the stream pointer. If the newBeginPosition is larger than the stream itself, then, the begin position is not set.


discardLeft

public void discardLeft(int amountToShrinkBy)
Shrink the buffer left by the amount given. Ie. bytes from 0 to amountToShrinkBy are thrown away


expandBuffer

private void expandBuffer(int minExtension)
Expand the buffer by at least the number of bytes requested in minExtension. To optimize performance and reduce memory copies and allocation, we have a staged buffer expansion. In all cases, if minExpansion is greater than the value about then the buffer will be increased by minExtension.



Apache Derby V10.0 Engine Documentation - Copyright © 1997,2004 The Apache Software Foundation or its licensors, as applicable.