com.lowagie.text.rtf.document.output

## Class RtfByteArrayBuffer

- java.lang.Object
- - java.io.OutputStream
  - - com.lowagie.text.rtf.document.output.RtfByteArrayBuffer

- All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable

      public final class RtfByteArrayBuffer
      extends java.io.OutputStream

  A RtfByteArrayBuffer works much like `ByteArrayOutputStream` but is cheaper and faster in most cases (exception: large writes when reusing buffers).
  Version:
    $Id$
  Author:
    Thomas Bickel (tmb99@inode.at)

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private java.util.List` | `arrays`
    `private byte[]` | `buffer`
    `private int` | `pos`
    `private int` | `size`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RtfByteArrayBuffer()` Constructs a new buffer with a default initial size of 128 bytes.
    `RtfByteArrayBuffer(int bufferSize)` Creates a new buffer with the given initial size.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `append(byte[] a)` Appends the given array to this buffer without copying (if possible).
    `void` | `append(byte[][] a)` Appends all arrays to this buffer without copying (if possible).
    `private void` | `flushBuffer()`
    `private void` | `flushBuffer(int reqSize)`
    `void` | `reset()` Resets this buffer.
    `long` | `size()` Returns the number of bytes that have been written to this buffer so far.
    `byte[]` | `toByteArray()` Allocates a new array and copies all data that has been written to this buffer to the newly allocated array.
    `byte[][]` | `toByteArrayArray()` Returns the internal list of byte array buffers without copying the buffer contents.
    `java.lang.String` | `toString()`
    `void` | `write(byte[] src)` Copies the given array to the internal buffer.
    `void` | `write(byte[] src, int off, int len)` Copies len bytes starting at position off from the array src to the internal buffer.
    `long` | `write(java.io.InputStream in)` Writes all bytes available in the given inputstream to this buffer.
    `void` | `write(int b)` Copies the given byte to the internal buffer.
    `private void` | `writeLoop(byte[] src, int off, int len)`
    `void` | `writeTo(java.io.OutputStream out)` Writes all data that has been written to this buffer to the given output stream.

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

      `close, flush`

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

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

- - ### Field Detail

    - #### arrays

          private final java.util.List arrays

    - #### buffer

          private byte[] buffer

    - #### pos

          private int pos

    - #### size

          private int size

  - ### Constructor Detail

    - #### RtfByteArrayBuffer

          public RtfByteArrayBuffer()

      Constructs a new buffer with a default initial size of 128 bytes.

    - #### RtfByteArrayBuffer

          public RtfByteArrayBuffer(int bufferSize)

      Creates a new buffer with the given initial size.
      Parameters:
        `bufferSize` - desired initial size in bytes

  - ### Method Detail

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### reset

          public void reset()

      Resets this buffer.

    - #### size

          public long size()

      Returns the number of bytes that have been written to this buffer so far.
      Returns:
        number of bytes written to this buffer

    - #### flushBuffer

          private void flushBuffer()

    - #### flushBuffer

          private void flushBuffer(int reqSize)

    - #### write

          public void write(int b)

      Copies the given byte to the internal buffer.
      Specified by:
        `write` in class `java.io.OutputStream`
      Parameters:
        `b` -

    - #### write

          public void write(byte[] src)

      Copies the given array to the internal buffer.
      Overrides:
        `write` in class `java.io.OutputStream`
      Parameters:
        `src` -

    - #### write

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

      Copies len bytes starting at position off from the array src to the internal buffer.
      Overrides:
        `write` in class `java.io.OutputStream`
      Parameters:
        `src` -
        `off` -
        `len` -

    - #### writeLoop

          private void writeLoop(byte[] src,
                       int off,
                       int len)

    - #### write

          public long write(java.io.InputStream in)
                     throws java.io.IOException

      Writes all bytes available in the given inputstream to this buffer.
      Parameters:
        `in` -
      Returns:
        number of bytes written
      Throws:
        `java.io.IOException`

    - #### append

          public void append(byte[] a)

      Appends the given array to this buffer without copying (if possible).
      Parameters:
        `a` -

    - #### append

          public void append(byte[][] a)

      Appends all arrays to this buffer without copying (if possible).
      Parameters:
        `a` -

    - #### toByteArrayArray

          public byte[][] toByteArrayArray()

      Returns the internal list of byte array buffers without copying the buffer contents.
      Returns:
        number of bytes written

    - #### toByteArray

          public byte[] toByteArray()

      Allocates a new array and copies all data that has been written to this buffer to the newly allocated array.
      Returns:
        a new byte array

    - #### writeTo

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

      Writes all data that has been written to this buffer to the given output stream.
      Parameters:
        `out` -
      Throws:
        `java.io.IOException`