Package org.apache.commons.io.input
Class ChecksumInputStream
java.lang.Object
java.io.InputStream
java.io.FilterInputStream
org.apache.commons.io.input.ProxyInputStream
org.apache.commons.io.input.CountingInputStream
org.apache.commons.io.input.ChecksumInputStream
- All Implemented Interfaces:
Closeable
,AutoCloseable
Automatically verifies a
Checksum
value once the stream is exhausted or the count threshold is reached.
If the Checksum
does not meet the expected value when exhausted, then the input stream throws an
IOException
.
If you do not need the verification or threshold feature, then use a plain CheckedInputStream
.
To build an instance, use ChecksumInputStream.Builder
.
- Since:
- 2.16.0
- See Also:
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final long
The count threshold to limit how much input is consumed to update theChecksum
before the input stream validates its value.private final long
The expected checksum.Fields inherited from class java.io.FilterInputStream
in
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
ChecksumInputStream
(InputStream in, Checksum checksum, long expectedChecksumValue, long countThreshold) Constructs a new instance. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
afterRead
(int n) Adds the number of read bytes to the count.static ChecksumInputStream.Builder
builder()
Constructs a newChecksumInputStream.Builder
.private Checksum
Gets the current checksum value.long
Gets the byte count remaining to read.Methods inherited from class org.apache.commons.io.input.CountingInputStream
getByteCount, getCount, resetByteCount, resetCount, skip
Methods inherited from class org.apache.commons.io.input.ProxyInputStream
available, beforeRead, close, handleIOException, mark, markSupported, read, read, read, reset, unwrap
-
Field Details
-
expectedChecksumValue
private final long expectedChecksumValueThe expected checksum. -
countThreshold
private final long countThreshold
-
-
Constructor Details
-
ChecksumInputStream
private ChecksumInputStream(InputStream in, Checksum checksum, long expectedChecksumValue, long countThreshold) Constructs a new instance.- Parameters:
in
- the stream to wrap.checksum
- a Checksum implementation.expectedChecksumValue
- the expected checksum.countThreshold
- the count threshold to limit how much input is consumed, a negative number means the threshold is unbound.
-
-
Method Details
-
builder
Constructs a newChecksumInputStream.Builder
.- Returns:
- a new
ChecksumInputStream.Builder
.
-
afterRead
Description copied from class:CountingInputStream
Adds the number of read bytes to the count.- Overrides:
afterRead
in classCountingInputStream
- Parameters:
n
- number of bytes read, or -1 if no more bytes are available- Throws:
IOException
- Not thrown here but subclasses may throw.
-
getChecksum
Gets the current checksum value.- Returns:
- the current checksum value.
-
getRemaining
public long getRemaining()Gets the byte count remaining to read.- Returns:
- bytes remaining to read, a negative number means the threshold is unbound.
-