Class RandomAccessBufferedFileInputStream

java.lang.Object
java.io.InputStream
org.apache.pdfbox.io.RandomAccessBufferedFileInputStream
All Implemented Interfaces:
Closeable, AutoCloseable, RandomAccessRead, SequentialRead

public class RandomAccessBufferedFileInputStream extends 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)
  • Constructor Details

  • Method Details

    • 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 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 there is an error while seeking.
    • read

      public int read() throws IOException
      Description copied from interface: SequentialRead
      Read a single byte of data.
      Specified by:
      read in interface SequentialRead
      Specified by:
      read in class InputStream
      Returns:
      The byte of data that is being read.
      Throws:
      IOException - If there is an error while reading the data.
    • read

      public int read(byte[] b, int off, int len) throws IOException
      Description copied from interface: SequentialRead
      Read a buffer of data.
      Specified by:
      read in interface SequentialRead
      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.
    • available

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

      public long skip(long n) throws IOException
      Overrides:
      skip in class InputStream
      Throws:
      IOException
    • 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.
    • close

      public void close() throws IOException
      Description copied from interface: SequentialRead
      Release resources that are being held.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in interface SequentialRead
      Overrides:
      close in class InputStream
      Throws:
      IOException - If there is an error closing this resource.