java.lang.Object
java.io.InputStream
java.io.FilterInputStream
java.security.DigestInputStream
- 所有已实现的接口:
-
Closeable
,AutoCloseable
一个透明流,使用通过流传递的位更新关联的消息摘要。
要完成消息摘要计算,请在调用此摘要输入流的一个read
方法后,调用关联消息摘要上的digest
方法之一。
可以打开或关闭此流(请参见on
)。当打开时,调用read
方法之一会导致消息摘要更新。但当关闭时,消息摘要不会更新。默认情况下,流是打开的。
请注意,摘要对象只能计算一个摘要(请参见MessageDigest
),因此为了计算中间摘要,调用者应保留摘要对象的句柄,并为要计算的每个摘要克隆它,保持原始摘要不变。
- 实现注意:
-
此实现仅在打开时使用实际从输入流读取的数据更新消息摘要。这包括各种
read
方法,transferTo
,readAllBytes
和readNBytes
。请注意,skip
方法绕过的数据将被忽略。另一方面,如果底层流支持mark
和reset
方法,并且在reset
后再次读取相同数据,则消息摘要将再次更新。 - 自 JDK 版本:
- 1.2
- 参见:
-
Field Summary
Fields declared in class java.io.FilterInputStream
in
-
Constructor Summary
ConstructorDescriptionDigestInputStream
(InputStream stream, MessageDigest digest) 使用指定的输入流和消息摘要创建摘要输入流。 -
Method Summary
Modifier and TypeMethodDescription返回与此流关联的消息摘要。void
on
(boolean on) 打开或关闭摘要功能。int
read()
读取一个字节,并更新消息摘要(如果摘要功能已打开)。int
read
(byte[] b, int off, int len) 读取到字节数组中,并更新消息摘要(如果摘要功能已打开)。void
setMessageDigest
(MessageDigest digest) 将指定的消息摘要与此流关联。toString()
打印此摘要输入流及其关联的消息摘要对象的字符串表示形式。Methods declared in class java.io.FilterInputStream
available, close, mark, markSupported, read, reset, skip
Methods declared in class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
-
Field Details
-
digest
与此流关联的消息摘要。
-
-
Constructor Details
-
DigestInputStream
使用指定的输入流和消息摘要创建摘要输入流。- 参数:
-
stream
- 输入流。 -
digest
- 要与此流关联的消息摘要。
-
-
Method Details
-
getMessageDigest
返回与此流关联的消息摘要。- 返回:
- 与此流关联的消息摘要。
- 参见:
-
setMessageDigest
将指定的消息摘要与此流关联。- 参数:
-
digest
- 要与此流关联的消息摘要。 - 参见:
-
read
读取一个字节,并更新消息摘要(如果摘要功能已打开)。也就是说,此方法从输入流中读取一个字节,阻塞直到实际读取字节。如果摘要功能已打开(请参见on
),则此方法将调用与此流关联的消息摘要的update
,传递读取的字节。- 覆盖:
-
read
在类FilterInputStream
中 - 返回:
- 读取的字节。
- 抛出:
-
IOException
- 如果发生 I/O 错误。 - 参见:
-
read
读取到字节数组中,并更新消息摘要(如果摘要功能已打开)。也就是说,此方法从输入流中最多读取len
字节到数组b
中,从偏移量off
开始。此方法将阻塞,直到实际读取数据。如果摘要功能已打开(请参见on
),则此方法将调用与此流关联的消息摘要的update
,传递数据。- 覆盖:
-
read
在类FilterInputStream
中 - 参数:
-
b
- 要读取数据的数组。 -
off
- 数据应放置在b
中的起始偏移量。 -
len
- 从输入流中读取到数组b
中的最大字节数,从偏移量off
开始。 - 返回:
-
实际读取的字节数。如果在读取
len
字节之前到达流的末尾,则此值小于len
。如果在调用时已到达流的末尾,则返回-1,表示未读取任何字节。 - 抛出:
-
IOException
- 如果发生 I/O 错误。 - 参见:
-
on
public void on(boolean on) 打开或关闭摘要功能。默认为打开。当打开时,调用read
方法之一会导致消息摘要更新。但当关闭时,消息摘要不会更新。- 参数:
-
on
-true
表示打开摘要功能,false
表示关闭。
-
toString
打印此摘要输入流及其关联的消息摘要对象的字符串表示形式。
-