模块 java.base

类 DigestInputStream

所有已实现的接口:
Closeable , AutoCloseable

public class DigestInputStream extends FilterInputStream
一个透明流,它使用通过流的位来更新关联的消息摘要。

要完成消息摘要计算,请在调用此摘要输入流的 read 方法之一后调用关联消息摘要的 digest 方法之一。

可以打开或关闭此流(请参阅 on )。当它打开时,对 read 方法之一的调用会导致消息摘要的更新。但是当它关闭时,消息摘要不会更新。默认是打开流。

请注意,摘要对象只能计算一个摘要(请参阅 MessageDigest ),因此为了计算中间摘要,调用者应保留摘要对象的句柄,并为每个要计算的摘要克隆它,保持原始摘要不变。

实现注意事项:
此实现仅在消息摘要为 打开 时使用从输入流中实际读取的数据更新消息摘要。这包括各种 read 方法、transferToreadAllBytesreadNBytes。请注意,skip 方法绕过的数据将被忽略。另一方面,如果底层流支持 markreset 方法,并且在 reset 之后再次读取相同的数据,则再次更新消息摘要。
自从:
1.2
参见:
  • 字段详细信息

    • digest

      protected MessageDigest  digest
      与此流关联的消息摘要。
  • 构造方法详细信息

    • DigestInputStream

      public DigestInputStream(InputStream  stream, MessageDigest  digest)
      使用指定的输入流和消息摘要创建摘要输入流。
      参数:
      stream - 输入流。
      digest - 与此流关联的消息摘要。
  • 方法详情

    • getMessageDigest

      public MessageDigest  getMessageDigest()
      返回与此流关联的消息摘要。
      返回:
      与此流关联的消息摘要。
      参见:
    • setMessageDigest

      public void setMessageDigest(MessageDigest  digest)
      将指定的消息摘要与此流相关联。
      参数:
      digest - 与此流关联的消息摘要。
      参见:
    • read

      public int read() throws IOException
      读取一个字节,并更新消息摘要(如果摘要功能打开)。也就是说,此方法从输入流中读取一个字节,阻塞直到实际读取该字节。如果摘要功能打开(请参阅 on ),则此方法将在与此流关联的消息摘要上调用 update,将读取的字节传递给它。
      重写:
      read 在类 FilterInputStream
      返回:
      读取的字节。
      抛出:
      IOException - 如果发生 I/O 错误。
      参见:
    • 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 错误。
      参见:
    • on

      public void on(boolean on)
      打开或关闭摘要功能。默认是打开的。当它打开时,对 read 方法之一的调用会导致消息摘要的更新。但是当它关闭时,消息摘要不会更新。
      参数:
      on - true 打开摘要功能,false 将其关闭。
    • toString

      public String  toString()
      打印此摘要输入流及其关联的消息摘要对象的字符串表示形式。
      重写:
      toString 在类 Object
      返回:
      对象的字符串表示形式。