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