Class RepositionableInputStream
java.lang.Object
java.io.InputStream
java.io.FilterInputStream
java.io.BufferedInputStream
org.archive.io.RepositionableInputStream
- All Implemented Interfaces:
RepositionableStream,Closeable,AutoCloseable
Wrapper around an
InputStream to make a primitive Repositionable
stream. Uses a BufferedInputStream. Calls mark on every read so
we'll remember at least the last thing read (You can only backup on the
last thing read -- not last 2 or 3 things read). Used by
GzippedInputStream when reading streams over a network. Wraps a
HTTP, etc., stream so we can back it up if needs be after the
GZIP inflater has done a fill of its full buffer though it only needed
the first few bytes to finish decompressing the current GZIP member.
TODO: More robust implementation. Tried to use the it.unimi.dsi.io FastBufferdInputStream but relies on FileChannel ByteBuffers and if not present -- as would be the case reading from a network stream, the main application for this instance -- then it expects the underlying stream implements RepositionableStream interface so chicken or egg problem.
- Author:
- stack
-
Field Summary
Fields inherited from class java.io.FilterInputStream
in -
Constructor Summary
Constructors -
Method Summary
Methods inherited from class java.io.BufferedInputStream
available, close, markSupported, skip
-
Constructor Details
-
RepositionableInputStream
-
RepositionableInputStream
-
-
Method Details
-
read
- Overrides:
readin classFilterInputStream- Throws:
IOException
-
read
- Overrides:
readin classBufferedInputStream- Throws:
IOException
-
read
- Overrides:
readin classBufferedInputStream- Throws:
IOException
-
position
public void position(long offset) Description copied from interface:RepositionableStreamSets the current stream position.- Specified by:
positionin interfaceRepositionableStream- Parameters:
offset- the new stream position.
-
mark
public void mark(int readlimit) - Overrides:
markin classBufferedInputStream
-
reset
- Overrides:
resetin classBufferedInputStream- Throws:
IOException
-
isMarked
protected boolean isMarked() -
position
public long position()Description copied from interface:RepositionableStreamReturns the current stream position.- Specified by:
positionin interfaceRepositionableStream- Returns:
- the current stream position.
-