Class RandomAccessFile

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, RandomAccess, RandomAccessRead, SequentialRead

    public class RandomAccessFile
    extends java.lang.Object
    implements RandomAccess, java.io.Closeable
    An interface to allow temp PDF data to be stored in a scratch file on the disk to reduce memory consumption.
    Version:
    $Revision: 1.2 $
    Author:
    Ben Litchfield
    • Constructor Summary

      Constructors 
      Constructor Description
      RandomAccessFile​(java.io.File file, java.lang.String mode)
      Constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Release resources that are being held.
      long getPosition()
      Returns offset of next byte to be returned by a read method.
      long length()
      The total number of bytes that are available.
      int read()
      Read a single byte of data.
      int read​(byte[] b, int offset, int length)
      Read a buffer of data.
      void seek​(long position)
      Seek to a position in the data.
      void write​(byte[] b, int offset, int length)
      Write a buffer of data to the stream.
      void write​(int b)
      Write a byte to the stream.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • RandomAccessFile

        public RandomAccessFile​(java.io.File file,
                                java.lang.String mode)
                         throws java.io.FileNotFoundException
        Constructor.
        Parameters:
        file - The file to write the data to.
        mode - The writing mode.
        Throws:
        java.io.FileNotFoundException - If the file cannot be created.
    • Method Detail

      • close

        public void close()
                   throws java.io.IOException
        Release resources that are being held.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface SequentialRead
        Throws:
        java.io.IOException - If there is an error closing this resource.
      • seek

        public void seek​(long position)
                  throws java.io.IOException
        Seek to a position in the data.
        Specified by:
        seek in interface RandomAccessRead
        Parameters:
        position - The position to seek to.
        Throws:
        java.io.IOException - If there is an error while seeking.
      • getPosition

        public long getPosition()
                         throws java.io.IOException
        Returns offset of next byte to be returned by a read method.
        Specified by:
        getPosition in interface RandomAccessRead
        Returns:
        offset of next byte which will be returned with next SequentialRead.read() (if no more bytes are left it returns a value >= length of source)
        Throws:
        java.io.IOException
      • read

        public int read()
                 throws java.io.IOException
        Read a single byte of data.
        Specified by:
        read in interface SequentialRead
        Returns:
        The byte of data that is being read.
        Throws:
        java.io.IOException - If there is an error while reading the data.
      • read

        public int read​(byte[] b,
                        int offset,
                        int length)
                 throws java.io.IOException
        Read a buffer of data.
        Specified by:
        read in interface SequentialRead
        Parameters:
        b - The buffer to write the data to.
        offset - Offset into the buffer to start writing.
        length - The amount of data to attempt to read.
        Returns:
        The number of bytes that were actually read.
        Throws:
        java.io.IOException - If there was an error while reading the data.
      • length

        public long length()
                    throws java.io.IOException
        The total number of bytes that are available.
        Specified by:
        length in interface RandomAccessRead
        Returns:
        The number of bytes available.
        Throws:
        java.io.IOException - If there is an IO error while determining the length of the data stream.
      • write

        public void write​(byte[] b,
                          int offset,
                          int length)
                   throws java.io.IOException
        Write a buffer of data to the stream.
        Specified by:
        write in interface RandomAccess
        Parameters:
        b - The buffer to get the data from.
        offset - An offset into the buffer to get the data from.
        length - The length of data to write.
        Throws:
        java.io.IOException - If there is an error while writing the data.
      • write

        public void write​(int b)
                   throws java.io.IOException
        Write a byte to the stream.
        Specified by:
        write in interface RandomAccess
        Parameters:
        b - The byte to write.
        Throws:
        java.io.IOException - If there is an IO error while writing.