|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.io.InputStream
org.biojava.utils.io.CachingInputStream
A wrapper around InputStream
that provides in-memory
caching of the input data. This allows it to provide a seek(long)
method, which lets the user use an InputStream
like a
RandomAccessFile
(with appropriate caveats about memory
footprint, security, and performance).
This class has not been tested with very long input streams. It might choke.
Field Summary | |
protected byte[] |
cache
The byte cache itself. |
protected java.io.InputStream |
in
The underlying input stream whose data we're caching |
protected int |
ptr
The 0-based index into cache of the _next_ byte to return. |
protected int |
validLen
A count of the number of bytes in cache that contain
data read from the stream. |
Constructor Summary | |
CachingInputStream(java.io.InputStream in)
|
Method Summary | |
protected void |
expandCache(int additionalBytes)
Expands the cache to hold some number of additionalBytes . |
int |
read()
|
int |
read(byte[] b,
int start,
int len)
|
void |
seek(long pos)
Moves the pointer in the inputstream such that the byte starting at pos are returned by the next read. |
long |
skip(long num)
|
Methods inherited from class java.io.InputStream |
available, close, mark, markSupported, read, reset |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected byte[] cache
protected int ptr
protected int validLen
cache
that contain
data read from the stream.
protected java.io.InputStream in
Constructor Detail |
public CachingInputStream(java.io.InputStream in)
Method Detail |
public void seek(long pos) throws java.io.IOException
Seekable
pos
are returned by the next read.
seek
in interface Seekable
pos
- the position to which to seek
java.io.IOException
- when there's an I/O problempublic int read() throws java.io.IOException
java.io.IOException
public int read(byte[] b, int start, int len) throws java.io.IOException
java.io.IOException
public long skip(long num) throws java.io.IOException
java.io.IOException
protected void expandCache(int additionalBytes)
additionalBytes
.
Expansion is done multiplicatively for efficiency. Immediately after
calling this method, you must fill the additional bytes from the stream
because this method also updates validLen.
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |