# Class ByteArrayOutputStream

java.lang.Object
java.io.OutputStream
java.io.ByteArrayOutputStream

All Implemented Interfaces:
  `AutoCloseable`

public class ByteArrayOutputStream extends OutputStream
This class implements an output stream in which the data is written into a byte array. The buffer automatically grows as data is written to it. The data can be retrieved using toByteArray() and toString(). Since: JDK1.0, CLDC 1.0

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected byte[]`
  `buf`
  The buffer where data is stored.
  `protected int`
  `count`
  The number of valid bytes in the buffer.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ByteArrayOutputStream()`
  Creates a new byte array output stream.
  `ByteArrayOutputStream(int size)`
  Creates a new byte array output stream, with a buffer capacity of the specified size, in bytes.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  Closes this output stream and releases any system resources associated with this stream.
  `void`
  `reset()`
  Resets the count field of this byte array output stream to zero, so that all currently accumulated output in the output stream is discarded.
  `int`
  `size()`
  Returns the current size of the buffer.
  `byte[]`
  `toByteArray()`
  Creates a newly allocated byte array.
  `String`
  `toString()`
  Converts the buffer's contents into a string, translating bytes into characters according to the platform's default character encoding.
  `void`
  `write(byte[] b, int off, int len)`
  Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
  `void`
  `write(int b)`
  Writes the specified byte to this byte array output stream.

  ### Methods inherited from class OutputStream

  `flush, write`
  Modifier and Type
  Method
  Description
  `void`
  `flush()`
  Flushes this output stream and forces any buffered output bytes to be written out.
  `void`
  `write(byte[] b)`
  Writes b.length bytes from the specified byte array to this output stream.

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `final Class`
  `getClass()`
  Returns the runtime class of an object.
  `int`
  `hashCode()`
  Returns a hash code value for the object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `final void`
  `wait()`
  Causes current thread to wait until another thread invokes the method or the method for this object.
  `final void`
  `wait(long timeout)`
  Causes current thread to wait until either another thread invokes the method or the method for this object, or a specified amount of time has elapsed.
  `final void`
  `wait(long timeout, int nanos)`
  Causes current thread to wait until another thread invokes the method or the method for this object, or some other thread interrupts the current thread, or a certain amount of real time has elapsed.

- ## Field Details

  - ### buf

    protected byte[] buf
    The buffer where data is stored.

  - ### count

    protected int count
    The number of valid bytes in the buffer.

- ## Constructor Details

  - ### ByteArrayOutputStream

    public ByteArrayOutputStream()
    Creates a new byte array output stream. The buffer capacity is initially 32 bytes, though its size increases if necessary.

  - ### ByteArrayOutputStream

    public ByteArrayOutputStream(int size)
    Creates a new byte array output stream, with a buffer capacity of the specified size, in bytes. size - the initial size. - if size is negative.

- ## Method Details

  - ### close

    public void close() throws IOException
    Closes this output stream and releases any system resources associated with this stream. A closed stream cannot perform output operations and cannot be reopened.
    Specified by:
      `close` in interface `AutoCloseable`
    Overrides:
      `close` in class `OutputStream`
    Throws:
      `IOException`

  - ### reset

    public void reset()
    Resets the count field of this byte array output stream to zero, so that all currently accumulated output in the output stream is discarded. The output stream can be used again, reusing the already allocated buffer space.

  - ### size

    public int size()
    Returns the current size of the buffer.

  - ### toByteArray

    public byte[] toByteArray()
    Creates a newly allocated byte array. Its size is the current size of this output stream and the valid contents of the buffer have been copied into it.

  - ### toString

    public String toString()
    Converts the buffer's contents into a string, translating bytes into characters according to the platform's default character encoding.
    Overrides:
      `toString` in class `Object`

  - ### write

    public void write(byte[] b, int off, int len)
    Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
    Overrides:
      `write` in class `OutputStream`

  - ### write

    public void write(int b)
    Writes the specified byte to this byte array output stream.
    Specified by:
      `write` in class `OutputStream`