FastOutputStream (Oracle - Berkeley DB Java API)
Date: 2020-06-01

Package 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 | 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 | 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 | 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, nullOutputStream`

    - ### 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, 2020 Oracle and/or its affiliates. All rights reserved.