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
    Modifier and Type | Field and Description
    --- | ---
    `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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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`.
      Parameters:
        `b` - the byte to write.
      See Also:
        `write(int)`

    - #### writeFast

          public final void writeFast(byte[] fromBuf)

      Equivalent to `write(byte[])` but does not throw `IOException`.
      Parameters:
        `fromBuf` - the buffer to write.
      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`.
      Parameters:
        `fromBuf` - the buffer to write.
        `offset` - the start offset in the buffer.
        `length` - the number of bytes to write.
      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.

Copyright (c) 1996, 2017 Oracle and/or its affiliates. All rights reserved.