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