Class RandomAccessSource

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, SequentialSource

    final class RandomAccessSource
    extends java.lang.Object
    implements SequentialSource
    A SequentialSource backed by a RandomAccessRead.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()  
      long getPosition()
      Returns offset of next byte to be returned by a read method.
      boolean isClosed()
      Returns true if this source has been closed.
      boolean isEOF()
      Returns true if the end of the data source has been reached.
      int peek()
      This will peek at the next byte.
      int read()
      Read a single byte of data.
      int read​(byte[] b)
      Read a buffer of data.
      int read​(byte[] b, int offset, int length)
      Read a buffer of data.
      byte[] readFully​(int length)
      Reads a given number of bytes in its entirety.
      void unread​(byte[] bytes)
      Unreads an array of bytes.
      void unread​(byte[] bytes, int start, int len)
      Unreads a portion of an array of bytes.
      void unread​(int b)
      Unreads a single byte.
      • Methods inherited from class java.lang.Object

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

      • RandomAccessSource

        RandomAccessSource​(RandomAccessRead reader)
        Constructor.
        Parameters:
        reader - The random access reader to wrap.
    • Method Detail

      • read

        public int read()
                 throws java.io.IOException
        Description copied from interface: SequentialSource
        Read a single byte of data.
        Specified by:
        read in interface SequentialSource
        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)
                 throws java.io.IOException
        Description copied from interface: SequentialSource
        Read a buffer of data.
        Specified by:
        read in interface SequentialSource
        Parameters:
        b - The buffer to write the data to.
        Returns:
        The number of bytes that were actually read.
        Throws:
        java.io.IOException - If there was an error while reading the data.
      • read

        public int read​(byte[] b,
                        int offset,
                        int length)
                 throws java.io.IOException
        Description copied from interface: SequentialSource
        Read a buffer of data.
        Specified by:
        read in interface SequentialSource
        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.
      • getPosition

        public long getPosition()
                         throws java.io.IOException
        Description copied from interface: SequentialSource
        Returns offset of next byte to be returned by a read method.
        Specified by:
        getPosition in interface SequentialSource
        Returns:
        offset of next byte which will be returned with next SequentialSource.read() (if no more bytes are left it returns a value >= length of source).
        Throws:
        java.io.IOException - If there was an error while reading the data.
      • peek

        public int peek()
                 throws java.io.IOException
        Description copied from interface: SequentialSource
        This will peek at the next byte.
        Specified by:
        peek in interface SequentialSource
        Returns:
        The next byte on the stream, leaving it as available to read.
        Throws:
        java.io.IOException - If there is an error reading the next byte.
      • unread

        public void unread​(int b)
                    throws java.io.IOException
        Description copied from interface: SequentialSource
        Unreads a single byte.
        Specified by:
        unread in interface SequentialSource
        Parameters:
        b - byte array to push back
        Throws:
        java.io.IOException - if there is an error while unreading
      • unread

        public void unread​(byte[] bytes)
                    throws java.io.IOException
        Description copied from interface: SequentialSource
        Unreads an array of bytes.
        Specified by:
        unread in interface SequentialSource
        Parameters:
        bytes - byte array to be unread
        Throws:
        java.io.IOException - if there is an error while unreading
      • unread

        public void unread​(byte[] bytes,
                           int start,
                           int len)
                    throws java.io.IOException
        Description copied from interface: SequentialSource
        Unreads a portion of an array of bytes.
        Specified by:
        unread in interface SequentialSource
        Parameters:
        bytes - byte array to be unread
        start - start index
        len - number of bytes to be unread
        Throws:
        java.io.IOException - if there is an error while unreading
      • readFully

        public byte[] readFully​(int length)
                         throws java.io.IOException
        Description copied from interface: SequentialSource
        Reads a given number of bytes in its entirety.
        Specified by:
        readFully in interface SequentialSource
        Parameters:
        length - the number of bytes to be read
        Returns:
        a byte array containing the bytes just read
        Throws:
        java.io.IOException - if an I/O error occurs while reading data
      • isEOF

        public boolean isEOF()
                      throws java.io.IOException
        Description copied from interface: SequentialSource
        Returns true if the end of the data source has been reached.
        Specified by:
        isEOF in interface SequentialSource
        Returns:
        true if we are at the end of the data.
        Throws:
        java.io.IOException - If there is an error reading the next byte.
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException
      • isClosed

        public boolean isClosed()
                         throws java.io.IOException
        Description copied from interface: SequentialSource
        Returns true if this source has been closed.
        Specified by:
        isClosed in interface SequentialSource
        Returns:
        true if the source has been closed
        Throws:
        java.io.IOException