com.sleepycat.util

## Class FastOutputStream

- java.lang.Object
- - java.io.OutputStream
  - - com.sleepycat.util.FastOutputStream

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

Direct Known Subclasses:
  TupleOutput

    public class FastOutputStream
    extends java.io.OutputStream

A replacement for ByteArrayOutputStream that does not synchronize every byte read.

This class extends `OutputStream` and its `write()` methods allow it to be used as a standard output stream. In addition, it provides `writeFast()` methods that are not declared to throw `IOException`. `IOException` is never thrown by this class.

### Field Summary

Fields
`static int` `DEFAULT_BUMP_SIZE` The default amount that the buffer is increased when it is full.
`static int` `DEFAULT_INIT_SIZE` The default initial size of the buffer if no initialSize parameter is specified.

### Constructor Summary

Constructors
Constructor and Description
`FastOutputStream()` Creates an output stream with default sizes.
`FastOutputStream(byte[] buffer)` Creates an output stream with a given initial buffer and a default bump size.
`FastOutputStream(byte[] buffer, int bumpSize)` Creates an output stream with a given initial buffer and a given bump size.
`FastOutputStream(int initialSize)` Creates an output stream with a default bump size and a given initial size.
`FastOutputStream(int initialSize, int bumpSize)` Creates an output stream with a given bump size and initial size.

### Method Summary

Methods
`void` `addSize(int sizeAdded)` Skip the given number of bytes in the buffer.
`byte[]` `getBufferBytes()` Returns the buffer owned by this object.
`int` `getBufferLength()` Returns the length used in the internal buffer, i.e., the offset at which data will be written next.
`int` `getBufferOffset()` Returns the offset of the internal buffer.
`void` `makeSpace(int sizeNeeded)` Ensure that at least the given number of bytes are available in the internal buffer.
`void` `reset()`
`int` `size()`
`byte[]` `toByteArray()`
`java.lang.String` `toString()`
`java.lang.String` `toString(java.lang.String encoding)`
`void` `write(byte[] fromBuf)`
`void` `write(byte[] fromBuf, int offset, int length)`
`void` `write(int b)`
`void` `writeFast(byte[] fromBuf)` Equivalent to `write(byte[])`but does not throw `IOException`.``
`void` `writeFast(byte[] fromBuf, int offset, int length)` Equivalent to `write(byte[],int,int)`but does not throw `IOException`.``
`void` `writeFast(int b)` Equivalent to `write(int)`but does not throw `IOException`.``
`void` `writeTo(java.io.OutputStream out)`

### Methods inherited from class java.io.OutputStream

`close, flush`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Field Detail

#### DEFAULT_INIT_SIZE

    public static final int DEFAULT_INIT_SIZE

The default initial size of the buffer if no initialSize parameter is specified. This constant is 100 bytes.

See Also:
  Constant Field Values

#### DEFAULT_BUMP_SIZE

    public static final int DEFAULT_BUMP_SIZE

The default amount that the buffer is increased when it is full. This constant is zero, which means to double the current buffer size.

See Also:
  Constant Field Values

### Constructor Detail

#### FastOutputStream

    public FastOutputStream()

Creates an output stream with default sizes.

#### FastOutputStream

    public FastOutputStream(int initialSize)

Creates an output stream with a default bump size and a given initial size.

Parameters:
  `initialSize` - the initial size of the buffer.

#### FastOutputStream

    public FastOutputStream(int initialSize,
                    int bumpSize)

Creates an output stream with a given bump size and initial size.

Parameters:
  `initialSize` - the initial size of the buffer.
  `bumpSize` - the amount to increment the buffer.

#### FastOutputStream

    public FastOutputStream(byte[] buffer)

Creates an output stream with a given initial buffer and a default bump size.

Parameters:
  `buffer` - the initial buffer; will be owned by this object.

#### FastOutputStream

    public FastOutputStream(byte[] buffer,
                    int bumpSize)

Creates an output stream with a given initial buffer and a given bump size.

Parameters:
  `buffer` - the initial buffer; will be owned by this object.
  `bumpSize` - the amount to increment the buffer. If zero (the default), the current buffer size will be doubled when the buffer is full.

### Method Detail

#### size

    public int size()

#### reset

    public void reset()

#### write

    public void write(int b)

Specified by:
  `write` in class `java.io.OutputStream`

#### write

    public void write(byte[] fromBuf)

Overrides:
  `write` in class `java.io.OutputStream`

#### write

    public void write(byte[] fromBuf,
             int offset,
             int length)

Overrides:
  `write` in class `java.io.OutputStream`

#### writeTo

    public void writeTo(java.io.OutputStream out)
                 throws java.io.IOException

Throws:
  `java.io.IOException`

#### toString

    public java.lang.String toString()

Overrides:
  `toString` in class `java.lang.Object`

#### toString

    public java.lang.String toString(java.lang.String encoding)
                              throws java.io.UnsupportedEncodingException

Throws:
  `java.io.UnsupportedEncodingException`

#### toByteArray

    public byte[] toByteArray()

#### writeFast

    public final void writeFast(int b)

Equivalent to `write(int)`but does not throw `IOException`.``

See Also:
  `write(int)`

#### writeFast

    public final void writeFast(byte[] fromBuf)

Equivalent to `write(byte[])`but does not throw `IOException`.``

See Also:
  `write(byte[])`

#### writeFast

    public final void writeFast(byte[] fromBuf,
                 int offset,
                 int length)

Equivalent to `write(byte[],int,int)`but does not throw `IOException`.``

See Also:
  `write(byte[],int,int)`

#### getBufferBytes

    public byte[] getBufferBytes()

Returns the buffer owned by this object.

Returns:
  the buffer.

#### getBufferOffset

    public int getBufferOffset()

Returns the offset of the internal buffer.

Returns:
  always zero currently.

#### getBufferLength

    public int getBufferLength()

Returns the length used in the internal buffer, i.e., the offset at which data will be written next.

Returns:
  the buffer length.

#### makeSpace

    public void makeSpace(int sizeNeeded)

Ensure that at least the given number of bytes are available in the internal buffer.

Parameters:
  `sizeNeeded` - the number of bytes desired.

#### addSize

    public void addSize(int sizeAdded)

Skip the given number of bytes in the buffer.

Parameters:
  `sizeAdded` - number of bytes to skip.