java.lang.Object java.io.InputStream java.io.FilterInputStream java.security.DigestInputStream
public class DigestInputStream
使用通过流的位更新关联消息摘要的透明流。
要完成消息摘要计算,先要调用此摘要输入流的一个 read
方法,之后在关联的消息摘要上调用一个 digest
方法。
开启或关闭此流都是可能的(请参见 on
)。开启时,调用 read
方法之一将导致消息摘要的更新。但是关闭时,不更新消息摘要。流在默认情况下是开启的。
注意,摘要对象只能计算一个摘要(参见 MessageDigest
),因此,为了计算中间摘要,调用者应该保留到摘要对象的句柄并为要计算的每一个摘要复制该对象,不改动原始摘要。
MessageDigest
,
DigestOutputStream
字段摘要 | |
---|---|
protected MessageDigest |
digest 与此流关联的消息摘要。 |
从类 java.io.FilterInputStream 继承的字段 |
---|
in |
构造方法摘要 | |
---|---|
DigestInputStream(InputStream stream, MessageDigest digest) 使用指定的输入流和消息摘要创建一个摘要输入流。 |
方法摘要 | |
---|---|
MessageDigest |
getMessageDigest() 返回与此流关联的消息摘要。 |
void |
on(boolean on) 开启或关闭摘要功能。 |
int |
read() 读取字节并更新消息摘要(如果开启了摘要功能)。 |
int |
read(byte[] b, int off, int len) 读入 byte 数组并更新消息摘要(如果开启了摘要功能)。 |
void |
setMessageDigest(MessageDigest digest) 将指定的消息摘要与此流相关联。 |
String |
toString() 打印此摘要输入流及其关联的消息摘要对象的字符串表示形式。 |
从类 java.io.FilterInputStream 继承的方法 |
---|
available, close, mark, markSupported, read, reset, skip |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
protected MessageDigest digest
构造方法详细信息 |
---|
public DigestInputStream(InputStream stream, MessageDigest digest)
stream
- 输入流。
digest
- 要与此流关联的消息摘要。
方法详细信息 |
---|
public MessageDigest getMessageDigest()
setMessageDigest(java.security.MessageDigest)
public void setMessageDigest(MessageDigest digest)
digest
- 要与此流关联的消息摘要。
getMessageDigest()
public int read() throws IOException
on
),则此方法将在与此流关联的消息摘要上调用
update
,将读取的字节传递给该方法。
FilterInputStream
中的
read
IOException
- 如果发生 I/O 错误。
MessageDigest.update(byte)
public int read(byte[] b, int off, int len) throws IOException
len
个字节读入数组
b
,从偏移量
off
开始。此方法在实际读取数据前一直阻塞。如果开启摘要功能(参见
on
),则此方法将在与此流关联的消息摘要上调用
update
,将数据传递给该方法。
FilterInputStream
中的
read
b
- 从中读取数据的数组。
off
-
b
中的偏移量,应将数据从此处开始放入数组。
len
- 从输入流读入 b 的最大字节数,从偏移量
off
开始。
len
个字节前到达了流的末尾,则其小于
len
。如果因为进行调用时已经到达了流的末尾而没有读取任何字节,则返回 -1。
IOException
- 如果发生 I/O 错误。
MessageDigest.update(byte[], int, int)
public void on(boolean on)
read
方法之一将导致消息摘要的更新。但是关闭时,不更新消息摘要。
on
- 为 true 表示开启摘要功能,为 false 表示关闭。
public String toString()