Package org.apache.commons.io.output

# Class UnsynchronizedByteArrayOutputStream

java.lang.Object
java.io.OutputStream
org.apache.commons.io.output.AbstractByteArrayOutputStream
org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream

All Implemented Interfaces:
  `Closeable`, `Flushable`, `AutoCloseable`

public final class UnsynchronizedByteArrayOutputStream extends AbstractByteArrayOutputStream
Implements a version of `AbstractByteArrayOutputStream` without any concurrent thread safety.

To build an instance, use `UnsynchronizedByteArrayOutputStream.Builder`.

Since:
  2.7
See Also:
  - `UnsynchronizedByteArrayOutputStream.Builder`

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `UnsynchronizedByteArrayOutputStream.Builder`
  Builds a new `UnsynchronizedByteArrayOutputStream`.

  ## Nested classes/interfaces inherited from class org.apache.commons.io.output.AbstractByteArrayOutputStream

  `AbstractByteArrayOutputStream.InputStreamConstructor<T extends InputStream>`

- ## Field Summary

  ### Fields inherited from class org.apache.commons.io.output.AbstractByteArrayOutputStream

  `count`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `UnsynchronizedByteArrayOutputStream()`
  Deprecated.
  Use `builder()`, `UnsynchronizedByteArrayOutputStream.Builder`, and `UnsynchronizedByteArrayOutputStream.Builder.get()`.
  `UnsynchronizedByteArrayOutputStream(int size)`
  Deprecated.
  Use `builder()`, `UnsynchronizedByteArrayOutputStream.Builder`, and `UnsynchronizedByteArrayOutputStream.Builder.get()`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static UnsynchronizedByteArrayOutputStream.Builder`
  `builder()`
  Constructs a new `UnsynchronizedByteArrayOutputStream.Builder`.
  `void`
  `reset()`
  See `ByteArrayOutputStream.reset()`.
  `int`
  `size()`
  Returns the current size of the byte array.
  `static InputStream`
  `toBufferedInputStream(InputStream input)`
  Fetches entire contents of an `InputStream` and represent same data as result InputStream.
  `static InputStream`
  `toBufferedInputStream(InputStream input, int size)`
  Fetches entire contents of an `InputStream` and represent same data as result InputStream.
  `byte[]`
  `toByteArray()`
  Gets the current contents of this byte stream as a byte array.
  `InputStream`
  `toInputStream()`
  Gets the current contents of this byte stream as an Input Stream.
  `void`
  `write(byte[] b, int off, int len)`
  `void`
  `write(int b)`
  `int`
  `write(InputStream in)`
  Writes the entire contents of the specified input stream to this byte stream.
  `void`
  `writeTo(OutputStream out)`
  Writes the entire contents of this byte stream to the specified output stream.

  ### Methods inherited from class org.apache.commons.io.output.AbstractByteArrayOutputStream

  `close, needNewBuffer, resetImpl, toByteArrayImpl, toInputStream, toString, toString, toString, writeImpl, writeImpl, writeImpl, writeToImpl`

  ### 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`

- ## Constructor Details

  - ### UnsynchronizedByteArrayOutputStream

    @Deprecated public UnsynchronizedByteArrayOutputStream()
    Deprecated.
    Use `builder()`, `UnsynchronizedByteArrayOutputStream.Builder`, and `UnsynchronizedByteArrayOutputStream.Builder.get()`.
    Constructs a new byte array output stream. The buffer capacity is initially 1024 bytes, though its size increases if necessary.

  - ### UnsynchronizedByteArrayOutputStream

    @Deprecated public UnsynchronizedByteArrayOutputStream(int size)
    Deprecated.
    Use `builder()`, `UnsynchronizedByteArrayOutputStream.Builder`, and `UnsynchronizedByteArrayOutputStream.Builder.get()`. Will be private in 3.0.0.
    Constructs a new byte array output stream, with a buffer capacity of the specified size, in bytes.
    Parameters:
      `size` - the initial size
    Throws:
      `IllegalArgumentException` - if size is negative

- ## Method Details

  - ### builder

    public static UnsynchronizedByteArrayOutputStream.Builder builder()
    Constructs a new `UnsynchronizedByteArrayOutputStream.Builder`.
    Returns:
      a new `UnsynchronizedByteArrayOutputStream.Builder`.

  - ### toBufferedInputStream

    public static InputStream toBufferedInputStream(InputStream input) throws IOException
    Fetches entire contents of an `InputStream` and represent same data as result InputStream.

    This method is useful where,

    - Source InputStream is slow.
    - It has network resources associated, so we cannot keep it open for long time.
    - It has network timeout associated.
    It can be used in favor of `toByteArray()`, since it avoids unnecessary allocation and copy of byte[].
    This method buffers the input internally, so there is no need to use a `BufferedInputStream`.
    Parameters:
      `input` - Stream to be fully buffered.
    Returns:
      A fully buffered stream.
    Throws:
      `IOException` - if an I/O error occurs.

  - ### toBufferedInputStream

    public static InputStream toBufferedInputStream(InputStream input, int size) throws IOException
    Fetches entire contents of an `InputStream` and represent same data as result InputStream.

    This method is useful where,

    - Source InputStream is slow.
    - It has network resources associated, so we cannot keep it open for long time.
    - It has network timeout associated.
    It can be used in favor of `toByteArray()`, since it avoids unnecessary allocation and copy of byte[].
    This method buffers the input internally, so there is no need to use a `BufferedInputStream`.
    Parameters:
      `input` - Stream to be fully buffered.
      `size` - the initial buffer size
    Returns:
      A fully buffered stream.
    Throws:
      `IOException` - if an I/O error occurs.

  - ### reset

    public void reset()
    Description copied from class: `AbstractByteArrayOutputStream`
    See `ByteArrayOutputStream.reset()`.
    Specified by:
      `reset` in class `AbstractByteArrayOutputStream`
    See Also:
      - `ByteArrayOutputStream.reset()`

  - ### size

    public int size()
    Description copied from class: `AbstractByteArrayOutputStream`
    Returns the current size of the byte array.
    Specified by:
      `size` in class `AbstractByteArrayOutputStream`
    Returns:
      the current size of the byte array

  - ### toByteArray

    public byte[] toByteArray()
    Description copied from class: `AbstractByteArrayOutputStream`
    Gets the current contents of this byte stream as a byte array. The result is independent of this stream.
    Specified by:
      `toByteArray` in class `AbstractByteArrayOutputStream`
    Returns:
      the current contents of this output stream, as a byte array
    See Also:
      - `ByteArrayOutputStream.toByteArray()`

  - ### toInputStream

    public InputStream toInputStream()
    Description copied from class: `AbstractByteArrayOutputStream`
    Gets the current contents of this byte stream as an Input Stream. The returned stream is backed by buffers of `this` stream, avoiding memory allocation and copy, thus saving space and time.
    Specified by:
      `toInputStream` in class `AbstractByteArrayOutputStream`
    Returns:
      the current contents of this output stream.
    See Also:
      - `ByteArrayOutputStream.toByteArray()`
      - `AbstractByteArrayOutputStream.reset()`

  - ### write

    public void write(byte[] b, int off, int len)
    Specified by:
      `write` in class `AbstractByteArrayOutputStream`

  - ### write

    public int write(InputStream in) throws IOException
    Description copied from class: `AbstractByteArrayOutputStream`
    Writes the entire contents of the specified input stream to this byte stream. Bytes from the input stream are read directly into the internal buffer of this stream.
    Specified by:
      `write` in class `AbstractByteArrayOutputStream`
    Parameters:
      `in` - the input stream to read from
    Returns:
      total number of bytes read from the input stream (and written to this stream)
    Throws:
      `IOException` - if an I/O error occurs while reading the input stream

  - ### write

    public void write(int b)
    Specified by:
      `write` in class `AbstractByteArrayOutputStream`

  - ### writeTo

    public void writeTo(OutputStream out) throws IOException
    Description copied from class: `AbstractByteArrayOutputStream`
    Writes the entire contents of this byte stream to the specified output stream.
    Specified by:
      `writeTo` in class `AbstractByteArrayOutputStream`
    Parameters:
      `out` - the output stream to write to
    Throws:
      `IOException` - if an I/O error occurs, such as if the stream is closed
    See Also:
      - `ByteArrayOutputStream.writeTo(OutputStream)`