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 longThe count threshold to limit how much input is consumed to update theChecksumbefore the input stream validates its value.private final longThe expected checksum.Fields inherited from class java.io.FilterInputStream
in -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateChecksumInputStream(InputStream in, Checksum checksum, long expectedChecksumValue, long countThreshold) Constructs a new instance. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidafterRead(int n) Adds the number of read bytes to the count.static ChecksumInputStream.Builderbuilder()Constructs a newChecksumInputStream.Builder.private ChecksumGets the current checksum value.longGets the byte count remaining to read.Methods inherited from class org.apache.commons.io.input.CountingInputStream
getByteCount, getCount, resetByteCount, resetCount, skipMethods 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:CountingInputStreamAdds the number of read bytes to the count.- Overrides:
afterReadin 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.
-