|
||||||||||
| 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
public class 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 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(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 InputStream in
| Constructor Detail |
|---|
public CachingInputStream(InputStream in)
| Method Detail |
|---|
public void seek(long pos)
throws IOException
Seekablepos are returned by the next read.
seek in interface Seekablepos - the position to which to seek
IOException - when there's an I/O problem
public int read()
throws IOException
read in class InputStreamIOException
public int read(byte[] b,
int start,
int len)
throws IOException
read in class InputStreamIOException
public long skip(long num)
throws IOException
skip in class InputStreamIOExceptionprotected 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 | |||||||||