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
FieldsFields declared in class java.io.FilterInputStream
in -
Constructor Summary
ConstructorsConstructorDescriptionDigestInputStream(InputStream stream, MessageDigest digest) 使用指定的输入流和消息摘要创建摘要输入流。 -
Method Summary
Modifier and TypeMethodDescription返回与此流关联的消息摘要。voidon(boolean on) 打开或关闭摘要功能。intread()读取一个字节,并更新消息摘要(如果摘要功能已打开)。intread(byte[] b, int off, int len) 读取到字节数组中,并更新消息摘要(如果摘要功能已打开)。voidsetMessageDigest(MessageDigest digest) 将指定的消息摘要与此流关联。toString()打印此摘要输入流及其关联的消息摘要对象的字符串表示形式。Methods declared in class java.io.FilterInputStream
available, close, mark, markSupported, read, reset, skipMethods 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
打印此摘要输入流及其关联的消息摘要对象的字符串表示形式。
-