Package org.apache.pdfbox.io
Class RandomAccessReadView
java.lang.Object
org.apache.pdfbox.io.RandomAccessReadView
- All Implemented Interfaces:
Closeable,AutoCloseable,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.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final booleanprivate longprivate RandomAccessReadprivate final longprivate final long -
Constructor Summary
ConstructorsConstructorDescriptionRandomAccessReadView(RandomAccessRead randomAccessRead, long startPosition, long streamLength) Constructor.RandomAccessReadView(RandomAccessRead randomAccessRead, long startPosition, long streamLength, boolean closeInput) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprivate voidEnsure that that the view isn't closed.voidclose()createView(long startPosition, long streamLength) Creates a random access read view starting at the given position with the given length.longReturns offset of next byte to be returned by a read method.booleanisClosed()Returns true if this source has been closed.booleanisEOF()A simple test to see if we are at the end of the data.longlength()The total number of bytes that are available.intread()Read a single byte of data.intread(byte[] b, int off, int len) Read a buffer of data.private voidRestore the current position within the underlying random access read.voidrewind(int bytes) Seek backwards the given number of bytes.voidseek(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, waitMethods inherited from interface org.apache.pdfbox.io.RandomAccessRead
available, peek, read, skip
-
Field Details
-
randomAccessRead
-
startPosition
private final long startPosition -
streamLength
private final long streamLength -
closeInput
private final boolean closeInput -
currentPosition
private long currentPosition
-
-
Constructor Details
-
RandomAccessReadView
public RandomAccessReadView(RandomAccessRead randomAccessRead, long startPosition, long streamLength) Constructor.- Parameters:
randomAccessRead- the underlying random access readstartPosition- start position within the underlying random access readstreamLength- stream length
-
RandomAccessReadView
public RandomAccessReadView(RandomAccessRead randomAccessRead, long startPosition, long streamLength, boolean closeInput) Constructor.- Parameters:
randomAccessRead- the underlying random access readstartPosition- start position within the underlying random access readstreamLength- stream lengthcloseInput- close the underlying random access read when closing the view if set to true
-
-
Method Details
-
getPosition
Returns offset of next byte to be returned by a read method.- Specified by:
getPositionin interfaceRandomAccessRead- 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
Seek to a position in the data.- Specified by:
seekin interfaceRandomAccessRead- Parameters:
newOffset- The position to seek to.- Throws:
IOException- If there is an error while seeking.
-
read
Read a single byte of data.- Specified by:
readin interfaceRandomAccessRead- Returns:
- The byte of data that is being read.
- Throws:
IOException- If there is an error while reading the data.
-
read
Read a buffer of data.- Specified by:
readin interfaceRandomAccessRead- 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
The total number of bytes that are available.- Specified by:
lengthin interfaceRandomAccessRead- Returns:
- The number of bytes available.
- Throws:
IOException- If there is an IO error while determining the length of the data stream.
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
isClosed
public boolean isClosed()Returns true if this source has been closed.- Specified by:
isClosedin interfaceRandomAccessRead- Returns:
- true if the source has been closed
-
rewind
Seek backwards the given number of bytes.- Specified by:
rewindin interfaceRandomAccessRead- Parameters:
bytes- the number of bytes to be seeked backwards- Throws:
IOException- If there is an error while seeking
-
isEOF
A simple test to see if we are at the end of the data.- Specified by:
isEOFin interfaceRandomAccessRead- Returns:
- true if we are at the end of the data.
- Throws:
IOException- If there is an error reading the next byte.
-
restorePosition
Restore the current position within the underlying random access read.- Throws:
IOException
-
checkClosed
Ensure that that the view isn't closed.- Throws:
IOException- If RandomAccessReadView already closed
-
createView
Description copied from interface:RandomAccessReadCreates a random access read view starting at the given position with the given length.- Specified by:
createViewin interfaceRandomAccessRead- Parameters:
startPosition- start position within the underlying random access readstreamLength- stream length- Returns:
- the random access read view
- Throws:
IOException- if something went wrong when creating the view for the RandomAccessRead
-