- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- java.security.DigestInputStream
-
- 实现的所有接口
-
Closeable,AutoCloseable
public class DigestInputStream extends FilterInputStream
透明流,使用通过流的位更新关联的消息摘要。要完成消息摘要计算,则需要调用一个
digest方法对相关消息的调用此摘要输入流的一个消化后read种方法。可以打开或关闭此流(请参阅
on)。 当它打开时,对read方法之一的调用会导致消息摘要的更新。 但是当它关闭时,消息摘要不会更新。 默认情况下,流是打开的。请注意,摘要对象只能计算一个摘要(请参阅
MessageDigest),因此,为了计算中间摘要,调用者应保留摘要对象的句柄,并为每个要计算的摘要克隆它,使原始摘要保持不变。- 从以下版本开始:
- 1.2
- 另请参见:
-
MessageDigest,DigestOutputStream
-
-
字段汇总
字段 变量和类型 字段 描述 protected MessageDigestdigest与此流关联的消息摘要。-
声明的属性在类 java.io.FilterInputStream
in
-
-
构造方法摘要
构造方法 构造器 描述 DigestInputStream(InputStream stream, MessageDigest digest)使用指定的输入流和消息摘要创建摘要输入流。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 MessageDigestgetMessageDigest()返回与此流关联的消息摘要。voidon(boolean on)打开或关闭摘要功能。intread()读取一个字节,并更新消息摘要(如果摘要功能打开)。intread(byte[] b, int off, int len)读入字节数组,并更新消息摘要(如果摘要功能打开)。voidsetMessageDigest(MessageDigest digest)将指定的消息摘要与此流关联。StringtoString()打印此摘要输入流及其关联的消息摘要对象的字符串表示形式。-
声明方法的类 java.io.FilterInputStream
available, close, mark, markSupported, read, reset, skip
-
声明方法的类 java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
-
-
-
-
字段详细信息
-
digest
protected MessageDigest digest
与此流关联的消息摘要。
-
-
构造方法详细信息
-
DigestInputStream
public DigestInputStream(InputStream stream, MessageDigest digest)
使用指定的输入流和消息摘要创建摘要输入流。- 参数
-
stream- 输入流。 -
digest- 与此流关联的消息摘要。
-
-
方法详细信息
-
getMessageDigest
public MessageDigest getMessageDigest()
返回与此流关联的消息摘要。- 结果
- 与此流关联的消息摘要。
- 另请参见:
-
setMessageDigest(java.security.MessageDigest)
-
setMessageDigest
public void setMessageDigest(MessageDigest digest)
将指定的消息摘要与此流关联。- 参数
-
digest- 与此流关联的消息摘要。 - 另请参见:
-
getMessageDigest()
-
read
public int read() throws IOException读取一个字节,并更新消息摘要(如果摘要功能打开)。 也就是说,此方法从输入流中读取一个字节,阻塞直到实际读取该字节。 如果摘要功能打开(参见on),则此方法将在与此流关联的消息摘要上调用update,并将读取的字节传递给它。- 重写:
-
readin classFilterInputStream - 结果
- 读取的字节。
- 异常
-
IOException- 如果发生I / O错误。 - 另请参见:
-
MessageDigest.update(byte)
-
read
public int read(byte[] b, int off, int len) throws IOException读入字节数组,并更新消息摘要(如果摘要功能打开)。 也就是说,此方法从输入流读取最多len个字节到阵列b,从偏移量off开始。 此方法将阻塞,直到实际读取数据。 如果摘要功能打开(参见on),则此方法将在与此流关联的消息摘要上调用update,并将数据传递给它。- 重写:
-
read在课堂FilterInputStream - 参数
-
b- 读取数据的数组。 -
off- 应放置数据的起始偏移量b。 -
len- 从输入流读入b的最大字节数,从偏移量off开始。 - 结果
-
实际读取的字节数。
这是小于
len如果之前读取已到达流的末尾len字节。 如果没有读取字节,则返回-1,因为在进行调用时已经到达流的末尾。 - 异常
-
IOException- 如果发生I / O错误。 - 另请参见:
-
MessageDigest.update(byte[], int, int)
-
on
public void on(boolean on)
打开或关闭摘要功能。 默认为打开。 当它打开时,对read方法之一的调用会导致消息摘要的更新。 但是当它关闭时,消息摘要不会更新。- 参数
-
on- true表示打开摘要功能,false表示关闭它。
-
-