Class SequenceRandomAccessRead

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

public class SequenceRandomAccessRead extends Object implements RandomAccessRead
Wrapper class to combine several RandomAccessRead instances so that they can be accessed as one big RandomAccessRead.
  • Field Details

    • readerList

      private final List<RandomAccessRead> readerList
    • startPositions

      private final long[] startPositions
    • endPositions

      private final long[] endPositions
    • numberOfReader

      private final int numberOfReader
    • currentIndex

      private int currentIndex
    • currentPosition

      private long currentPosition
    • totalLength

      private long totalLength
    • isClosed

      private boolean isClosed
    • currentRandomAccessRead

      private RandomAccessRead currentRandomAccessRead
  • Constructor Details

    • SequenceRandomAccessRead

      public SequenceRandomAccessRead(List<RandomAccessRead> randomAccessReadList)
  • Method Details

    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • getCurrentReader

      private RandomAccessRead getCurrentReader() throws IOException
      Throws:
      IOException
    • read

      public int read() throws IOException
      Description copied from interface: RandomAccessRead
      Read a single byte of data.
      Specified by:
      read in interface RandomAccessRead
      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 offset, int length) throws IOException
      Description copied from interface: RandomAccessRead
      Read a buffer of data.
      Specified by:
      read in interface RandomAccessRead
      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:
      IOException - If there was an error while reading the data.
    • getPosition

      public long getPosition() throws IOException
      Description copied from interface: RandomAccessRead
      Returns offset of next byte to be returned by a read method.
      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)
      Throws:
      IOException - If there was an error while getting the current position
    • seek

      public void seek(long position) throws IOException
      Description copied from interface: RandomAccessRead
      Seek to a position in the data.
      Specified by:
      seek in interface RandomAccessRead
      Parameters:
      position - The position to seek to.
      Throws:
      IOException - If there is an error while seeking.
    • 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.
    • isClosed

      public boolean isClosed()
      Description copied from interface: RandomAccessRead
      Returns true if this source has been closed.
      Specified by:
      isClosed in interface RandomAccessRead
      Returns:
      true if the source has been closed
    • checkClosed

      private void checkClosed() throws IOException
      Ensure that the SequenceRandomAccessRead is not closed
      Throws:
      IOException - If RandomAccessBuffer already closed
    • 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.
    • createView

      public RandomAccessReadView createView(long startPosition, long streamLength) throws IOException
      Description copied from interface: RandomAccessRead
      Creates a random access read view starting at the given position with the given length.
      Specified by:
      createView in interface RandomAccessRead
      Parameters:
      startPosition - start position within the underlying random access read
      streamLength - stream length
      Returns:
      the random access read view
      Throws:
      IOException - if something went wrong when creating the view for the RandomAccessRead