Class RandomAccessBufferedFileInputStream

    • Constructor Detail

      • RandomAccessBufferedFileInputStream

        public RandomAccessBufferedFileInputStream​(String filename)
                                            throws IOException
        Create a random access input stream instance for the file with the given name.
        Parameters:
        filename - the filename of the file to be read.
        Throws:
        IOException - if something went wrong while accessing the given file.
      • RandomAccessBufferedFileInputStream

        public RandomAccessBufferedFileInputStream​(File file)
                                            throws IOException
        Create a random access input stream instance for the given file.
        Parameters:
        file - the file to be read.
        Throws:
        IOException - if something went wrong while accessing the given file.
      • RandomAccessBufferedFileInputStream

        public RandomAccessBufferedFileInputStream​(InputStream input)
                                            throws IOException
        Create a random access input stream for the given input stream by copying the data to a temporary file.
        Parameters:
        input - the input stream to be read.
        Throws:
        IOException - if something went wrong while creating the temporary file.
    • Method Detail

      • getPosition

        public long getPosition()
        Returns offset in file at which next byte would be read.
        Specified by:
        getPosition in interface RandomAccessRead
        Returns:
        offset of next byte which will be returned with next RandomAccessRead.read() (if no more bytes are left it returns a value >= length of source)
      • seek

        public void seek​(long newOffset)
                  throws IOException
        Seeks to new position. If new position is outside of current page the new page is either taken from cache or read from file and added to cache.
        Specified by:
        seek in interface RandomAccessRead
        Parameters:
        newOffset - the position to seek to.
        Throws:
        IOException - if something went wrong.
      • read

        public int read​(byte[] b)
                 throws IOException
        Description copied from interface: RandomAccessRead
        Read a buffer of data.
        Specified by:
        read in interface RandomAccessRead
        Overrides:
        read in class InputStream
        Parameters:
        b - The buffer to write the data to.
        Returns:
        The number of bytes that were actually read.
        Throws:
        IOException - If there was an error while reading the data.
      • read

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

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

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

        public void rewind​(int bytes)
                    throws IOException
        Description copied from interface: RandomAccessRead
        Seek backwards the given number of bytes.
        Specified by:
        rewind in interface RandomAccessRead
        Parameters:
        bytes - the number of bytes to be seeked backwards
        Throws:
        IOException - If there is an error while seeking
      • readFully

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

        public boolean isEOF()
                      throws IOException
        Description copied from interface: RandomAccessRead
        A simple test to see if we are at the end of the data.
        Specified by:
        isEOF in interface RandomAccessRead
        Returns:
        true if we are at the end of the data.
        Throws:
        IOException - If there is an error reading the next byte.