Class RandomAccessBufferedFileInputStream

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

    public class RandomAccessBufferedFileInputStream
    extends java.io.InputStream
    implements RandomAccessRead
    Provides InputStream access to portions of a file combined with buffered reading of content. Start of next bytes to read can be set via seek method. File is accessed via RandomAccessFile and is read in byte chunks which are cached.
    Author:
    Timo Boehme (timo.boehme at ontochem com)
    • Method Summary

      All Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      int available()  
      void close()
      Release resources that are being held.
      long getFilePointer()
      Deprecated.
      use getPosition() instead
      long getPosition()
      Returns offset in file at which next byte would be read.
      long length()
      The total number of bytes that are available.
      int read()
      Read a single byte of data.
      int read​(byte[] b, int off, int len)
      Read a buffer of data.
      void seek​(long newOffset)
      Seeks to new position.
      long skip​(long n)  
      • Methods inherited from class java.io.InputStream

        mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, transferTo
      • Methods inherited from class java.lang.Object

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

      • RandomAccessBufferedFileInputStream

        public RandomAccessBufferedFileInputStream​(java.io.File _file)
                                            throws java.io.FileNotFoundException,
                                                   java.io.IOException
        Create input stream instance for given file.
        Throws:
        java.io.FileNotFoundException
        java.io.IOException
    • Method Detail

      • getFilePointer

        public long getFilePointer()
        Deprecated.
        use getPosition() instead
        Returns offset in file at which next byte would be read.
      • 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 SequentialRead.read() (if no more bytes are left it returns a value >= length of source)
      • seek

        public void seek​(long newOffset)
                  throws java.io.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:
        java.io.IOException - If there is an error while seeking.
      • read

        public int read()
                 throws java.io.IOException
        Description copied from interface: SequentialRead
        Read a single byte of data.
        Specified by:
        read in interface SequentialRead
        Specified by:
        read in class java.io.InputStream
        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 off,
                        int len)
                 throws java.io.IOException
        Description copied from interface: SequentialRead
        Read a buffer of data.
        Specified by:
        read in interface SequentialRead
        Overrides:
        read in class java.io.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:
        java.io.IOException - If there was an error while reading the data.
      • available

        public int available()
                      throws java.io.IOException
        Overrides:
        available in class java.io.InputStream
        Throws:
        java.io.IOException
      • skip

        public long skip​(long n)
                  throws java.io.IOException
        Overrides:
        skip in class java.io.InputStream
        Throws:
        java.io.IOException
      • length

        public long length()
                    throws java.io.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:
        java.io.IOException - If there is an IO error while determining the length of the data stream.
      • close

        public void close()
                   throws java.io.IOException
        Description copied from interface: SequentialRead
        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
        Overrides:
        close in class java.io.InputStream
        Throws:
        java.io.IOException - If there is an error closing this resource.