Package org.jets3t.service.io
Class RepeatableInputStream
java.lang.Object
java.io.InputStream
org.jets3t.service.io.RepeatableInputStream
- All Implemented Interfaces:
Closeable,AutoCloseable,InputStreamWrapper
A repeatable input stream wrapper for any input stream. This input stream relies on buffered
data to repeat, and can therefore only be repeated when less data has been read than this
buffer can hold.
Note: Always use a RepeatableFileInputStream instead of this class if you are
sourcing data from a file, as the file-based repeatable input stream can be repeated without
any limitations.
This class uses properties obtained through Jets3tProperties. For more information on
these properties please refer to
JetS3t Configuration
- Author:
- James Murty
-
Constructor Summary
ConstructorsConstructorDescriptionRepeatableInputStream(InputStream inputStream, int bufferSize) Creates a repeatable input stream based on another input stream. -
Method Summary
Modifier and TypeMethodDescriptionintvoidclose()voidmark(int readlimit) This method can only be used while less data has been read from the input stream than fits into the buffer.booleanintread()intread(byte[] out, int outOffset, int outLength) voidreset()Resets the input stream to the beginning by pointing the buffer offset to the beginning of the available data buffer.Methods inherited from class java.io.InputStream
nullInputStream, read, readAllBytes, readNBytes, readNBytes, skip, skipNBytes, transferTo
-
Constructor Details
-
RepeatableInputStream
Creates a repeatable input stream based on another input stream.- Parameters:
inputStream- an input stream to wrap. The data read from the wrapped input stream is buffered as it is read, up to the buffer limit specified.bufferSize- the number of bytes buffered by this class.
-
-
Method Details
-
reset
Resets the input stream to the beginning by pointing the buffer offset to the beginning of the available data buffer.- Overrides:
resetin classInputStream- Throws:
UnrecoverableIOException- when the available buffer size has been exceeded, in which case the input stream data cannot be repeated.IOException
-
markSupported
public boolean markSupported()- Overrides:
markSupportedin classInputStream
-
mark
public void mark(int readlimit) This method can only be used while less data has been read from the input stream than fits into the buffer. The readLimit parameter is ignored entirely.- Overrides:
markin classInputStream
-
available
- Overrides:
availablein classInputStream- Throws:
IOException
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classInputStream- Throws:
IOException
-
read
- Overrides:
readin classInputStream- Throws:
IOException
-
read
- Specified by:
readin classInputStream- Throws:
IOException
-
getWrappedInputStream
- Specified by:
getWrappedInputStreamin interfaceInputStreamWrapper- Returns:
- the underlying input stream wrapped by this class.
-