org.apache.pdfbox.io

## Class RandomAccessReadView

- java.lang.Object
- - org.apache.pdfbox.io.RandomAccessReadView

All Implemented Interfaces:
  Closeable, AutoCloseable, RandomAccessRead

    public class RandomAccessReadView
    extends Object
    implements RandomAccessRead

This class provides a view of a part of a random access read. It clips the section starting at the given start position with the given length into a new random access read.

### Constructor Summary

Constructors
Constructor and Description
`RandomAccessReadView(RandomAccessRead randomAccessRead, long startPosition, long streamLength)` Constructor.
`RandomAccessReadView(RandomAccessRead randomAccessRead, long startPosition, long streamLength, boolean closeInput)` Constructor.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `close()`
`RandomAccessReadView` `createView(long startPosition, long streamLength)` Creates a random access read view starting at the given position with the given length.
`long` `getPosition()` Returns offset of next byte to be returned by a read method.
`boolean` `isClosed()` Returns true if this source has been closed.
`boolean` `isEOF()` A simple test to see if we are at the end of the data.
`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` `rewind(int bytes)` Seek backwards the given number of bytes.
`void` `seek(long newOffset)` Seek to a position in the data.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.apache.pdfbox.io.RandomAccessRead

`available, peek, read, readFully, readFully, skip`

### Constructor Detail

#### RandomAccessReadView

    public RandomAccessReadView(RandomAccessRead randomAccessRead,
                                long startPosition,
                                long streamLength)

Constructor.

Parameters:
  `randomAccessRead` - the underlying random access read
  `startPosition` - start position within the underlying random access read
  `streamLength` - stream length

#### RandomAccessReadView

    public RandomAccessReadView(RandomAccessRead randomAccessRead,
                                long startPosition,
                                long streamLength,
                                boolean closeInput)

Constructor.

Parameters:
  `randomAccessRead` - the underlying random access read
  `startPosition` - start position within the underlying random access read
  `streamLength` - stream length
  `closeInput` - close the underlying random access read when closing the view if set to true

### Method Detail

#### getPosition

    public long getPosition()
                     throws IOException

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 newOffset)
              throws IOException

Seek to a position in the data.

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

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 off,
                    int len)
             throws IOException

Read a buffer of data.

Specified by:
  `read` in interface `RandomAccessRead`
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

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

Specified by:
  `close` in interface `Closeable`
Specified by:
  `close` in interface `AutoCloseable`
Throws:
  `IOException`

#### isClosed

    public boolean isClosed()

Returns true if this source has been closed.

Specified by:
  `isClosed` in interface `RandomAccessRead`
Returns:
  true if the source has been closed

#### rewind

    public void rewind(int bytes)
                throws IOException

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

#### isEOF

    public boolean isEOF()
                  throws IOException

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