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