Class RtfByteArrayBuffer

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable

    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: RtfByteArrayBuffer.java 4065 2009-09-16 23:09:11Z psoares33 $
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.List<byte[]> arrays  
      private byte[] buffer  
      private int pos  
      private int size  
    • Constructor Summary

      Constructors 
      Constructor 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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method 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.
      void write​(int b)
      Copies the given byte to the internal buffer.
      long write​(java.io.InputStream in)
      Writes all bytes available in the given inputstream to this 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, nullOutputStream
      • 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<byte[]> 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