com.lowagie.text.pdf

## Class RandomAccessFileOrArray

- java.lang.Object
- - com.lowagie.text.pdf.RandomAccessFileOrArray

- All Implemented Interfaces:
    java.io.DataInput

      public class RandomAccessFileOrArray
      extends java.lang.Object
      implements java.io.DataInput

  An implementation of a RandomAccessFile for input only that accepts a file or a byte array as data source.
  Author:
    Paulo Soares (psoares@consiste.pt)

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `(package private) byte[]` | `arrayIn`
    `(package private) int` | `arrayInPtr`
    `(package private) byte` | `back`
    `(package private) java.lang.String` | `filename`
    `(package private) boolean` | `isBack`
    `(package private) boolean` | `plainRandomAccess`
    `(package private) MappedRandomAccessFile` | `rf`
    `private int` | `startOffset` Holds value of property startOffset.
    `(package private) java.io.RandomAccessFile` | `trf`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RandomAccessFileOrArray(byte[] arrayIn)`
    `RandomAccessFileOrArray(java.io.InputStream is)`
    `RandomAccessFileOrArray(RandomAccessFileOrArray file)`
    `RandomAccessFileOrArray(java.lang.String filename)`
    `RandomAccessFileOrArray(java.lang.String filename, boolean forceRead, boolean plainRandomAccess)`
    `RandomAccessFileOrArray(java.net.URL url)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()`
    `int` | `getFilePointer()`
    `java.nio.ByteBuffer` | `getNioByteBuffer()`
    `int` | `getStartOffset()` Getter for property startOffset.
    `static byte[]` | `InputStreamToArray(java.io.InputStream is)`
    `protected void` | `insureOpen()`
    `boolean` | `isOpen()`
    `int` | `length()`
    `void` | `pushBack(byte b)`
    `int` | `read()`
    `int` | `read(byte[] b)`
    `int` | `read(byte[] b, int off, int len)`
    `boolean` | `readBoolean()`
    `byte` | `readByte()`
    `char` | `readChar()`
    `char` | `readCharLE()` Reads a Unicode character from this stream in little-endian order.
    `double` | `readDouble()`
    `double` | `readDoubleLE()`
    `float` | `readFloat()`
    `float` | `readFloatLE()`
    `void` | `readFully(byte[] b)`
    `void` | `readFully(byte[] b, int off, int len)`
    `int` | `readInt()`
    `int` | `readIntLE()` Reads a signed 32-bit integer from this stream in little-endian order.
    `java.lang.String` | `readLine()`
    `long` | `readLong()`
    `long` | `readLongLE()`
    `short` | `readShort()`
    `short` | `readShortLE()` Reads a signed 16-bit number from this stream in little-endian order.
    `int` | `readUnsignedByte()`
    `long` | `readUnsignedInt()` Reads an unsigned 32-bit integer from this stream.
    `long` | `readUnsignedIntLE()`
    `int` | `readUnsignedShort()`
    `int` | `readUnsignedShortLE()` Reads an unsigned 16-bit number from this stream in little-endian order.
    `java.lang.String` | `readUTF()`
    `void` | `reOpen()`
    `void` | `seek(int pos)`
    `void` | `seek(long pos)`
    `void` | `setStartOffset(int startOffset)` Setter for property startOffset.
    `long` | `skip(long n)`
    `int` | `skipBytes(int n)`

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

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

- - ### Field Detail

    - #### rf

          MappedRandomAccessFile rf

    - #### trf

          java.io.RandomAccessFile trf

    - #### plainRandomAccess

          boolean plainRandomAccess

    - #### filename

          java.lang.String filename

    - #### arrayIn

          byte[] arrayIn

    - #### arrayInPtr

          int arrayInPtr

    - #### back

          byte back

    - #### isBack

          boolean isBack

    - #### startOffset

          private int startOffset

      Holds value of property startOffset.

  - ### Constructor Detail

    - #### RandomAccessFileOrArray

          public RandomAccessFileOrArray(java.lang.String filename)
                                  throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### RandomAccessFileOrArray

          public RandomAccessFileOrArray(java.lang.String filename,
                                 boolean forceRead,
                                 boolean plainRandomAccess)
                                  throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### RandomAccessFileOrArray

          public RandomAccessFileOrArray(java.net.URL url)
                                  throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### RandomAccessFileOrArray

          public RandomAccessFileOrArray(java.io.InputStream is)
                                  throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### RandomAccessFileOrArray

          public RandomAccessFileOrArray(byte[] arrayIn)

    - #### RandomAccessFileOrArray

          public RandomAccessFileOrArray(RandomAccessFileOrArray file)

  - ### Method Detail

    - #### InputStreamToArray

          public static byte[] InputStreamToArray(java.io.InputStream is)
                                           throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### pushBack

          public void pushBack(byte b)

    - #### read

          public int read()
                   throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### read

          public int read(byte[] b,
                 int off,
                 int len)
                   throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### read

          public int read(byte[] b)
                   throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### readFully

          public void readFully(byte[] b)
                         throws java.io.IOException

      Specified by:
        `readFully` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readFully

          public void readFully(byte[] b,
                       int off,
                       int len)
                         throws java.io.IOException

      Specified by:
        `readFully` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### skip

          public long skip(long n)
                    throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### skipBytes

          public int skipBytes(int n)
                        throws java.io.IOException

      Specified by:
        `skipBytes` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### reOpen

          public void reOpen()
                      throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### insureOpen

          protected void insureOpen()
                             throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### isOpen

          public boolean isOpen()

    - #### close

          public void close()
                     throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### length

          public int length()
                     throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### seek

          public void seek(int pos)
                    throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### seek

          public void seek(long pos)
                    throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### getFilePointer

          public int getFilePointer()
                             throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### readBoolean

          public boolean readBoolean()
                              throws java.io.IOException

      Specified by:
        `readBoolean` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readByte

          public byte readByte()
                        throws java.io.IOException

      Specified by:
        `readByte` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readUnsignedByte

          public int readUnsignedByte()
                               throws java.io.IOException

      Specified by:
        `readUnsignedByte` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readShort

          public short readShort()
                          throws java.io.IOException

      Specified by:
        `readShort` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readShortLE

          public final short readShortLE()
                                  throws java.io.IOException

      Reads a signed 16-bit number from this stream in little-endian order. The method reads two bytes from this stream, starting at the current stream pointer. If the two bytes read, in order, are `b1` and `b2`, where each of the two values is between `0` and `255`, inclusive, then the result is equal to:

      >          (short)((b2 << 8) | b1)

      This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.

      Returns:
        the next two bytes of this stream, interpreted as a signed 16-bit number.
      Throws:
        `java.io.EOFException` - if this stream reaches the end before reading two bytes.
        `java.io.IOException` - if an I/O error occurs.

    - #### readUnsignedShort

          public int readUnsignedShort()
                                throws java.io.IOException

      Specified by:
        `readUnsignedShort` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readUnsignedShortLE

          public final int readUnsignedShortLE()
                                        throws java.io.IOException

      Reads an unsigned 16-bit number from this stream in little-endian order. This method reads two bytes from the stream, starting at the current stream pointer. If the bytes read, in order, are `b1` and `b2`, where `0 <= b1, b2 <= 255`, then the result is equal to:

      >          (b2 << 8) | b1

      This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.

      Returns:
        the next two bytes of this stream, interpreted as an unsigned 16-bit integer.
      Throws:
        `java.io.EOFException` - if this stream reaches the end before reading two bytes.
        `java.io.IOException` - if an I/O error occurs.

    - #### readChar

          public char readChar()
                        throws java.io.IOException

      Specified by:
        `readChar` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readCharLE

          public final char readCharLE()
                                throws java.io.IOException

      Reads a Unicode character from this stream in little-endian order. This method reads two bytes from the stream, starting at the current stream pointer. If the bytes read, in order, are `b1` and `b2`, where `0 <= b1, b2 <= 255`, then the result is equal to:

      >          (char)((b2 << 8) | b1)

      This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.

      Returns:
        the next two bytes of this stream as a Unicode character.
      Throws:
        `java.io.EOFException` - if this stream reaches the end before reading two bytes.
        `java.io.IOException` - if an I/O error occurs.

    - #### readInt

          public int readInt()
                      throws java.io.IOException

      Specified by:
        `readInt` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readIntLE

          public final int readIntLE()
                              throws java.io.IOException

      Reads a signed 32-bit integer from this stream in little-endian order. This method reads 4 bytes from the stream, starting at the current stream pointer. If the bytes read, in order, are `b1`, `b2`, `b3`, and `b4`, where `0 <= b1, b2, b3, b4 <= 255`, then the result is equal to:

      >          (b4 << 24) | (b3 << 16) + (b2 << 8) + b1

      This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.

      Returns:
        the next four bytes of this stream, interpreted as an `int`.
      Throws:
        `java.io.EOFException` - if this stream reaches the end before reading four bytes.
        `java.io.IOException` - if an I/O error occurs.

    - #### readUnsignedInt

          public final long readUnsignedInt()
                                     throws java.io.IOException

      Reads an unsigned 32-bit integer from this stream. This method reads 4 bytes from the stream, starting at the current stream pointer. If the bytes read, in order, are `b1`, `b2`, `b3`, and `b4`, where `0 <= b1, b2, b3, b4 <= 255`, then the result is equal to:

      >          (b1 << 24) | (b2 << 16) + (b3 << 8) + b4

      This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.

      Returns:
        the next four bytes of this stream, interpreted as a `long`.
      Throws:
        `java.io.EOFException` - if this stream reaches the end before reading four bytes.
        `java.io.IOException` - if an I/O error occurs.

    - #### readUnsignedIntLE

          public final long readUnsignedIntLE()
                                       throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### readLong

          public long readLong()
                        throws java.io.IOException

      Specified by:
        `readLong` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readLongLE

          public final long readLongLE()
                                throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### readFloat

          public float readFloat()
                          throws java.io.IOException

      Specified by:
        `readFloat` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readFloatLE

          public final float readFloatLE()
                                  throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### readDouble

          public double readDouble()
                            throws java.io.IOException

      Specified by:
        `readDouble` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readDoubleLE

          public final double readDoubleLE()
                                    throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### readLine

          public java.lang.String readLine()
                                    throws java.io.IOException

      Specified by:
        `readLine` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readUTF

          public java.lang.String readUTF()
                                   throws java.io.IOException

      Specified by:
        `readUTF` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### getStartOffset

          public int getStartOffset()

      Getter for property startOffset.
      Returns:
        Value of property startOffset.

    - #### setStartOffset

          public void setStartOffset(int startOffset)

      Setter for property startOffset.
      Parameters:
        `startOffset` - New value of property startOffset.

    - #### getNioByteBuffer

          public java.nio.ByteBuffer getNioByteBuffer()
                                               throws java.io.IOException

      Throws:
        `java.io.IOException`
      Since:
        2.0.8