Class RandomAccessBuffer

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

    public class RandomAccessBuffer
    extends java.lang.Object
    implements RandomAccess, java.io.Closeable
    An implementation of the RandomAccess interface to store a pdf in memory. The data will be stored in 16kb chunks organized in an ArrayList.
    • Constructor Summary

      Constructors 
      Constructor Description
      RandomAccessBuffer()
      Default constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      RandomAccessBuffer clone()  
      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

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

      • RandomAccessBuffer

        public RandomAccessBuffer()
        Default constructor.
    • 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​(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.
      • 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.