net.dontdrinkandroot.utils.lang

## Class FastByteArrayOutputStream

- java.lang.Object
- - java.io.OutputStream
  - - net.dontdrinkandroot.utils.lang.FastByteArrayOutputStream

All Implemented Interfaces:
  Closeable, Flushable, AutoCloseable

    public class FastByteArrayOutputStream
    extends OutputStream

ByteArrayOutputStream implementation that doesn't synchronize methods and doesn't copy the data on toByteArray(). Source: http://javatechniques.com/blog/faster-deep-copies-of-java-objects/

### Field Summary

Fields
`protected byte[]` `buf` Buffer and size
`protected int` `size`

### Constructor Summary

Constructors
Constructor and Description
`FastByteArrayOutputStream()` Constructs a stream with buffer capacity size 5K
`FastByteArrayOutputStream(int initSize)` Constructs a stream with the given initial size

### Method Summary

Methods
`byte[]` `getByteArray()` Returns the byte array containing the written data.
`InputStream` `getInputStream()` Returns a ByteArrayInputStream for reading back the written data
`int` `getSize()`
`void` `reset()`
`void` `write(byte[] b)`
`void` `write(byte[] b, int off, int len)`
`void` `write(int b)`

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

`close, flush`

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

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

### Field Detail

#### buf

    protected byte[] buf

Buffer and size

#### size

    protected int size

### Constructor Detail

#### FastByteArrayOutputStream

    public FastByteArrayOutputStream()

Constructs a stream with buffer capacity size 5K

#### FastByteArrayOutputStream

    public FastByteArrayOutputStream(int initSize)

Constructs a stream with the given initial size

### Method Detail

#### getSize

    public int getSize()

#### getByteArray

    public byte[] getByteArray()

Returns the byte array containing the written data. Note that this array will almost always be larger than the amount of data actually written.

#### write

    public final void write(byte[] b)

Overrides:
  `write` in class `OutputStream`

#### write

    public final void write(byte[] b,
             int off,
             int len)

Overrides:
  `write` in class `OutputStream`

#### write

    public final void write(int b)

Specified by:
  `write` in class `OutputStream`

#### reset

    public void reset()

#### getInputStream

    public InputStream getInputStream()

Returns a ByteArrayInputStream for reading back the written data