Package org.apache.pdfbox.io
Class RandomAccessBufferedFileInputStream
- java.lang.Object
-
- java.io.InputStream
-
- org.apache.pdfbox.io.RandomAccessBufferedFileInputStream
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,RandomAccessRead,SequentialRead
public class RandomAccessBufferedFileInputStream extends java.io.InputStream implements RandomAccessRead
ProvidesInputStreamaccess 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 viaRandomAccessFileand is read in byte chunks which are cached.- Author:
- Timo Boehme (timo.boehme at ontochem com)
-
-
Constructor Summary
Constructors Constructor Description RandomAccessBufferedFileInputStream(java.io.File _file)Create input stream instance for given file.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description intavailable()voidclose()Release resources that are being held.longgetFilePointer()Deprecated.usegetPosition()insteadlonggetPosition()Returns offset in file at which next byte would be read.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 newOffset)Seeks to new position.longskip(long n)
-
-
-
Method Detail
-
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:
getPositionin 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
public void seek(long newOffset) throws java.io.IOExceptionSeeks 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:
newOffset- The position to seek to.- Throws:
java.io.IOException- If there is an error while seeking.
-
read
public int read() throws java.io.IOExceptionDescription copied from interface:SequentialReadRead a single byte of data.- Specified by:
readin interfaceSequentialRead- Specified by:
readin classjava.io.InputStream- Returns:
- The byte of data that is being read.
- Throws:
java.io.IOException- If there is an error while reading the data.
-
read
public int read(byte[] b, int off, int len) throws java.io.IOExceptionDescription copied from interface:SequentialReadRead a buffer of data.- Specified by:
readin interfaceSequentialRead- Overrides:
readin classjava.io.InputStream- 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:
java.io.IOException- If there was an error while reading the data.
-
available
public int available() throws java.io.IOException- Overrides:
availablein classjava.io.InputStream- Throws:
java.io.IOException
-
skip
public long skip(long n) throws java.io.IOException- Overrides:
skipin classjava.io.InputStream- Throws:
java.io.IOException
-
length
public long length() throws java.io.IOExceptionDescription copied from interface:RandomAccessReadThe total number of bytes that are available.- Specified by:
lengthin interfaceRandomAccessRead- Returns:
- The number of bytes available.
- Throws:
java.io.IOException- If there is an IO error while determining the length of the data stream.
-
close
public void close() throws java.io.IOExceptionDescription copied from interface:SequentialReadRelease resources that are being held.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Specified by:
closein interfaceSequentialRead- Overrides:
closein classjava.io.InputStream- Throws:
java.io.IOException- If there is an error closing this resource.
-
-