Package org.apache.pdfbox.io
Class RandomAccessBufferedFileInputStream
java.lang.Object
java.io.InputStream
org.apache.pdfbox.io.RandomAccessBufferedFileInputStream
- All Implemented Interfaces:
Closeable
,AutoCloseable
,RandomAccessRead
,SequentialRead
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 Summary
ConstructorsConstructorDescriptionCreate input stream instance for given file. -
Method Summary
Modifier and TypeMethodDescriptionint
void
close()
Release resources that are being held.long
Deprecated.long
Returns offset in file at which next byte would be read.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
seek
(long newOffset) Seeks to new position.long
skip
(long n) Methods inherited from class java.io.InputStream
mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skipNBytes, transferTo
-
Constructor Details
-
RandomAccessBufferedFileInputStream
Create input stream instance for given file.- Throws:
FileNotFoundException
IOException
-
-
Method Details
-
getFilePointer
public long getFilePointer()Deprecated.usegetPosition()
insteadReturns 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 interfaceRandomAccessRead
- 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
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 interfaceRandomAccessRead
- Parameters:
newOffset
- The position to seek to.- Throws:
IOException
- If there is an error while seeking.
-
read
Description copied from interface:SequentialRead
Read a single byte of data.- Specified by:
read
in interfaceSequentialRead
- Specified by:
read
in classInputStream
- 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:SequentialRead
Read a buffer of data.- Specified by:
read
in interfaceSequentialRead
- Overrides:
read
in classInputStream
- 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
- Overrides:
available
in classInputStream
- Throws:
IOException
-
skip
- Overrides:
skip
in classInputStream
- Throws:
IOException
-
length
Description copied from interface:RandomAccessRead
The total number of bytes that are available.- Specified by:
length
in interfaceRandomAccessRead
- Returns:
- The number of bytes available.
- Throws:
IOException
- If there is an IO error while determining the length of the data stream.
-
close
Description copied from interface:SequentialRead
Release resources that are being held.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceSequentialRead
- Overrides:
close
in classInputStream
- Throws:
IOException
- If there is an error closing this resource.
-
getPosition()
instead