Package org.apache.pdfbox.io
Class RandomAccessReadBufferedFile
java.lang.Object
org.apache.pdfbox.io.RandomAccessReadBufferedFile
- All Implemented Interfaces:
Closeable,AutoCloseable,RandomAccessRead
Provides random 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
FileChannel and is read in ByteBuffer chunks which are cached.- Author:
- Timo Boehme
-
Constructor Summary
ConstructorsConstructorDescriptionCreate a random access buffered file instance for the given file.RandomAccessReadBufferedFile(String filename) Create a random access buffered file instance for the file with the given name.Create a random access buffered file instance using the given path. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()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.voidseek(long position) Seeks to new position.
-
Constructor Details
-
RandomAccessReadBufferedFile
Create a random access buffered file instance for the file with the given name.- Parameters:
filename- the filename of the file to be read.- Throws:
IOException- if something went wrong while accessing the given file.
-
RandomAccessReadBufferedFile
Create a random access buffered file instance for the given file.- Parameters:
file- the file to be read.- Throws:
IOException- if something went wrong while accessing the given file.
-
RandomAccessReadBufferedFile
Create a random access buffered file instance using the given path.- Parameters:
path- path of the file to be read.- Throws:
IOException- if something went wrong while accessing the given file.
-
-
Method Details
-
getPosition
Description copied from interface:RandomAccessReadReturns 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
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:
seekin interfaceRandomAccessRead- Parameters:
position- the position to seek to.- Throws:
IOException- if something went wrong.
-
read
Description copied from interface:RandomAccessReadRead 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
Description copied from interface:RandomAccessReadRead 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
Description copied from interface:RandomAccessReadThe 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()Description copied from interface:RandomAccessReadReturns true if this source has been closed.- Specified by:
isClosedin interfaceRandomAccessRead- Returns:
- true if the source has been closed
-
isEOF
Description copied from interface:RandomAccessReadA 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.
-
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
-