FileDocCategorySizeDatePackage
CheckedInputStream.javaAPI DocJava SE 6 API2881Tue Jun 10 00:26:00 BST 2008java.util.zip

CheckedInputStream

public class CheckedInputStream extends FilterInputStream
An input stream that also maintains a checksum of the data being read. The checksum can then be used to verify the integrity of the input data.
see
Checksum
version
1.22, 04/07/06
author
David Connelly

Fields Summary
private Checksum
cksum
Constructors Summary
public CheckedInputStream(InputStream in, Checksum cksum)
Creates an input stream using the specified Checksum.

param
in the input stream
param
cksum the Checksum

	super(in);
	this.cksum = cksum;
    
Methods Summary
public java.util.zip.ChecksumgetChecksum()
Returns the Checksum for this input stream.

return
the Checksum value

	return cksum;
    
public intread()
Reads a byte. Will block if no input is available.

return
the byte read, or -1 if the end of the stream is reached.
exception
IOException if an I/O error has occurred

	int b = in.read();
	if (b != -1) {
	    cksum.update(b);
	}
	return b;
    
public intread(byte[] buf, int off, int len)
Reads into an array of bytes. If len is not zero, the method blocks until some input is available; otherwise, no bytes are read and 0 is returned.

param
buf the buffer into which the data is read
param
off the start offset in the destination array b
param
len the maximum number of bytes read
return
the actual number of bytes read, or -1 if the end of the stream is reached.
exception
NullPointerException If buf is null.
exception
IndexOutOfBoundsException If off is negative, len is negative, or len is greater than buf.length - off
exception
IOException if an I/O error has occurred

	len = in.read(buf, off, len);
	if (len != -1) {
	    cksum.update(buf, off, len);
	}
	return len;
    
public longskip(long n)
Skips specified number of bytes of input.

param
n the number of bytes to skip
return
the actual number of bytes skipped
exception
IOException if an I/O error has occurred

	byte[] buf = new byte[512];
	long total = 0;
	while (total < n) {
	    long len = n - total;
	    len = read(buf, 0, len < buf.length ? (int)len : buf.length);
	    if (len == -1) {
		return total;
	    }
	    total += len;
	}
	return total;