org.apache.cassandra.io.util

## Class FastByteArrayOutputStream

- java.lang.Object
- - java.io.OutputStream
  - - org.apache.cassandra.io.util.FastByteArrayOutputStream

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

    public class FastByteArrayOutputStream
    extends java.io.OutputStream

A specialized `OutputStream` for class for writing content to an (internal) byte array. As bytes are written to this stream, the byte array may be expanded to hold more bytes. When the writing is considered to be finished, a copy of the byte array can be requested from the class.

See Also:
  `ByteArrayOutputStream`

### Field Summary

Fields
`protected byte[]` `buf` The byte array containing the bytes written.
`protected int` `count` The number of bytes written.

### Constructor Summary

Constructors
Constructor and Description
`FastByteArrayOutputStream()` Constructs a new ByteArrayOutputStream with a default size of 32 bytes.
`FastByteArrayOutputStream(int size)` Constructs a new `ByteArrayOutputStream` with a default size of `size` bytes.

### Method Summary

Methods
`void` `close()` Closes this stream.
`void` `reset()` Resets this stream to the beginning of the underlying byte array.
`int` `size()` Returns the total number of bytes written to this stream so far.
`byte[]` `toByteArray()` Returns the contents of this ByteArrayOutputStream as a byte array.
`java.lang.String` `toString()` Returns the contents of this ByteArrayOutputStream as a string.
`java.lang.String` `toString(int hibyte)` Deprecated. Use `toString()`.
`java.lang.String` `toString(java.lang.String enc)` Returns the contents of this ByteArrayOutputStream as a string converted according to the encoding declared in `enc`.
`void` `write(byte[] buffer, int offset, int len)` Writes `count` bytes from the byte array `buffer` starting at offset `index` to this stream.
`void` `write(int oneByte)` Writes the specified byte `oneByte` to the OutputStream.
`void` `writeTo(java.io.OutputStream out)` Takes the contents of this stream and writes it to the output stream `out`.

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

`flush, write`

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

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

### Field Detail

#### buf

    protected byte[] buf

The byte array containing the bytes written.

#### count

    protected int count

The number of bytes written.

### Constructor Detail

#### FastByteArrayOutputStream

    public FastByteArrayOutputStream()

Constructs a new ByteArrayOutputStream with a default size of 32 bytes. If more than 32 bytes are written to this instance, the underlying byte array will expand.

#### FastByteArrayOutputStream

    public FastByteArrayOutputStream(int size)

Constructs a new `ByteArrayOutputStream` with a default size of `size` bytes. If more than `size` bytes are written to this instance, the underlying byte array will expand.

Parameters:
  `size` - initial size for the underlying byte array, must be non-negative.
Throws:
  `java.lang.IllegalArgumentException` - if `size` < 0.

### Method Detail

#### close

    public void close()
               throws java.io.IOException

Closes this stream. This releases system resources used for this stream.

Specified by:
  `close` in interface `java.io.Closeable`
Specified by:
  `close` in interface `java.lang.AutoCloseable`
Overrides:
  `close` in class `java.io.OutputStream`
Throws:
  `java.io.IOException` - if an error occurs while attempting to close this stream.

#### reset

    public void reset()

Resets this stream to the beginning of the underlying byte array. All subsequent writes will overwrite any bytes previously stored in this stream.

#### size

    public int size()

Returns the total number of bytes written to this stream so far.

Returns:
  the number of bytes written to this stream.

#### toByteArray

    public byte[] toByteArray()

Returns the contents of this ByteArrayOutputStream as a byte array. Any changes made to the receiver after returning will not be reflected in the byte array returned to the caller.

Returns:
  this stream's current contents as a byte array.

#### toString

    public java.lang.String toString()

Returns the contents of this ByteArrayOutputStream as a string. Any changes made to the receiver after returning will not be reflected in the string returned to the caller.

Overrides:
  `toString` in class `java.lang.Object`
Returns:
  this stream's current contents as a string.

#### toString

    @Deprecated
    public java.lang.String toString(int hibyte)

Deprecated. Use `toString()`.
Returns the contents of this ByteArrayOutputStream as a string. Each byte `b` in this stream is converted to a character `c` using the following function: `c == (char)(((hibyte & 0xff) << 8) | (b & 0xff))`. This method is deprecated and either `toString()` or `toString(String)` should be used.

Parameters:
  `hibyte` - the high byte of each resulting Unicode character.
Returns:
  this stream's current contents as a string with the high byte set to `hibyte`.

#### toString

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

Returns the contents of this ByteArrayOutputStream as a string converted according to the encoding declared in `enc`.

Parameters:
  `enc` - a string representing the encoding to use when translating this stream to a string.
Returns:
  this stream's current contents as an encoded string.
Throws:
  `java.io.UnsupportedEncodingException` - if the provided encoding is not supported.

#### write

    public void write(byte[] buffer,
             int offset,
             int len)

Writes `count` bytes from the byte array `buffer` starting at offset `index` to this stream.

Overrides:
  `write` in class `java.io.OutputStream`
Parameters:
  `buffer` - the buffer to be written.
  `offset` - the initial position in `buffer` to retrieve bytes.
  `len` - the number of bytes of `buffer` to write.
Throws:
  `java.lang.NullPointerException` - if `buffer` is `null`.
  `java.lang.IndexOutOfBoundsException` - if `offset < 0` or `len < 0`, or if `offset + len` is greater than the length of `buffer`.

#### write

    public void write(int oneByte)

Writes the specified byte `oneByte` to the OutputStream. Only the low order byte of `oneByte` is written.

Specified by:
  `write` in class `java.io.OutputStream`
Parameters:
  `oneByte` - the byte to be written.

#### writeTo

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

Takes the contents of this stream and writes it to the output stream `out`.

Parameters:
  `out` - an OutputStream on which to write the contents of this stream.
Throws:
  `java.io.IOException` - if an error occurs while writing to `out`.