net.i2p.util
Class LookaheadInputStream
java.lang.Object
java.io.InputStream
java.io.FilterInputStream
net.i2p.util.LookaheadInputStream
- All Implemented Interfaces:
- Closeable
public class LookaheadInputStream
- extends FilterInputStream
Simple lookahead buffer to keep the last K bytes in reserve,
configured to easily be reused. Currently only used by the
ResettableGZIPInputStream
Constructor Summary |
LookaheadInputStream(int lookaheadSize)
Configure a stream that hides a number of bytes from the reader. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
LookaheadInputStream
public LookaheadInputStream(int lookaheadSize)
- Configure a stream that hides a number of bytes from the reader.
The last n bytes will never be available from read(),
they can only be obtained from getFooter().
initialize() MUST be called before doing any read() calls.
- Parameters:
lookaheadSize
- how many bytes to hide
getEOFReached
public boolean getEOFReached()
initialize
public void initialize(InputStream src)
throws IOException
- Start the LookaheadInputStream with the given input stream.
Resets everything if the LookaheadInputStream was previously used.
WARNING - blocking until lookaheadSize bytes are read!
- Throws:
IOException
read
public int read()
throws IOException
- Overrides:
read
in class FilterInputStream
- Throws:
IOException
read
public int read(byte[] buf)
throws IOException
- Overrides:
read
in class FilterInputStream
- Throws:
IOException
read
public int read(byte[] buf,
int off,
int len)
throws IOException
- Overrides:
read
in class FilterInputStream
- Throws:
IOException
getFooter
public byte[] getFooter()
- grab the lookahead footer