Class RandomAccessFileOrArray

java.lang.Object
com.itextpdf.io.source.RandomAccessFileOrArray
All Implemented Interfaces:
DataInput

public class RandomAccessFileOrArray extends Object implements DataInput
Class that is used to unify reading from random access files and arrays.
  • Field Details

    • plainRandomAccess

      public static boolean plainRandomAccess
      When true the file access is not done through a memory mapped file. Use it if the file is too big to be mapped in your address space.
  • Constructor Details

    • RandomAccessFileOrArray

      public RandomAccessFileOrArray (IRandomAccessSource byteSource)
      Creates a RandomAccessFileOrArray that wraps the specified byte source. The byte source will be closed when this RandomAccessFileOrArray is closed.
      Parameters:
      byteSource - the byte source to wrap
  • Method Details

    • createView

      public RandomAccessFileOrArray createView()
      Creates an independent view of this object (with it's own file pointer and push back queue). Closing the new object will not close this object. Closing this object will have adverse effect on the view.
      Returns:
      the new view
    • createSourceView

      public IRandomAccessSource createSourceView()
      Creates the view of the byte source of this object. Closing the view won't affect this object. Closing source will have adverse effect on the view.
      Returns:
      the byte source view.
    • pushBack

      public void pushBack (byte b)
      Pushes a byte back. The next get() will return this byte instead of the value from the underlying data source
      Parameters:
      b - the byte to push
    • read

      public int read() throws IOException
      Reads a single byte
      Returns:
      the byte, or -1 if EOF is reached
      Throws:
      IOException - in case of any reading error.
    • read

      public int read (byte[] b, int off, int len) throws IOException
      Reads the specified amount of bytes to the buffer applying the offset.
      Parameters:
      b - destination buffer
      off - offset at which to start storing characters
      len - maximum number of characters to read
      Returns:
      the number of bytes actually read or -1 in case of EOF
      Throws:
      IOException - in case of any I/O error
    • read

      public int read (byte[] b) throws IOException
      Reads the bytes to the buffer. This method will try to read as many bytes as the buffer can hold.
      Parameters:
      b - the destination buffer
      Returns:
      the number of bytes actually read
      Throws:
      IOException - in case of any I/O error
    • readFully

      public void readFully (byte[] b) throws IOException
      Specified by:
      readFully in interface DataInput
      Throws:
      IOException
    • readFully

      public void readFully (byte[] b, int off, int len) throws IOException
      Specified by:
      readFully in interface DataInput
      Throws:
      IOException
    • skip

      public long skip (long n)
      Make an attempt to skip the specified amount of bytes in source. However it may skip less amount of bytes. Possibly zero.
      Parameters:
      n - the number of bytes to skip
      Returns:
      the actual number of bytes skipped
    • skipBytes

      public int skipBytes (int n)
      Specified by:
      skipBytes in interface DataInput
    • close

      public void close() throws IOException
      Closes the underlying source.
      Throws:
      IOException - in case of any I/O error.
    • length

      public long length()
      Gets the total amount of bytes in the source.
      Returns:
      source's size.
    • seek

      public void seek (long pos)
      Sets the current position in the source to the specified index.
      Parameters:
      pos - the position to set
    • getPosition

      public long getPosition()
      Gets the current position of the source considering the pushed byte to the source.
      Returns:
      the index of last read byte in the source in or the index of last read byte in source - 1 in case byte was pushed.
    • readBoolean

      public boolean readBoolean() throws IOException
      Specified by:
      readBoolean in interface DataInput
      Throws:
      IOException
    • readByte

      public byte readByte() throws IOException
      Specified by:
      readByte in interface DataInput
      Throws:
      IOException
    • readUnsignedByte

      public int readUnsignedByte() throws IOException
      Specified by:
      readUnsignedByte in interface DataInput
      Throws:
      IOException
    • readShort

      public short readShort() throws IOException
      Specified by:
      readShort in interface DataInput
      Throws:
      IOException
    • readShortLE

      public final short readShortLE() throws 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:
      EOFException - if this stream reaches the end before reading two bytes.
      IOException - if an I/O error occurs.
    • readUnsignedShort

      public int readUnsignedShort() throws IOException
      Specified by:
      readUnsignedShort in interface DataInput
      Throws:
      IOException
    • readUnsignedShortLE

      public final int readUnsignedShortLE() throws 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:
      EOFException - if this stream reaches the end before reading two bytes.
      IOException - if an I/O error occurs.
    • readChar

      public char readChar() throws IOException
      Specified by:
      readChar in interface DataInput
      Throws:
      IOException
    • readCharLE

      public final char readCharLE() throws 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:
      EOFException - if this stream reaches the end before reading two bytes.
      IOException - if an I/O error occurs.
    • readInt

      public int readInt() throws IOException
      Specified by:
      readInt in interface DataInput
      Throws:
      IOException
    • readIntLE

      public final int readIntLE() throws 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:
      EOFException - if this stream reaches the end before reading four bytes.
      IOException - if an I/O error occurs.
    • readUnsignedInt

      public final long readUnsignedInt() throws 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:
      EOFException - if this stream reaches the end before reading four bytes.
      IOException - if an I/O error occurs.
    • readUnsignedIntLE

      public final long readUnsignedIntLE() throws IOException
      Throws:
      IOException
    • readLong

      public long readLong() throws IOException
      Specified by:
      readLong in interface DataInput
      Throws:
      IOException
    • readLongLE

      public final long readLongLE() throws IOException
      Throws:
      IOException
    • readFloat

      public float readFloat() throws IOException
      Specified by:
      readFloat in interface DataInput
      Throws:
      IOException
    • readFloatLE

      public final float readFloatLE() throws IOException
      Throws:
      IOException
    • readDouble

      public double readDouble() throws IOException
      Specified by:
      readDouble in interface DataInput
      Throws:
      IOException
    • readDoubleLE

      public final double readDoubleLE() throws IOException
      Throws:
      IOException
    • readLine

      public String readLine() throws IOException
      Specified by:
      readLine in interface DataInput
      Throws:
      IOException
    • readUTF

      public String readUTF() throws IOException
      Specified by:
      readUTF in interface DataInput
      Throws:
      IOException
    • readString

      public String readString (int length, String encoding) throws IOException
      Reads a String from the font file as bytes using the given encoding.
      Parameters:
      length - the length of bytes to read
      encoding - the given encoding
      Returns:
      the String read
      Throws:
      IOException - the font file could not be read