Module java.base
Package java.util.zip

Class InflaterInputStream

所有已实现的接口:
Closeable, AutoCloseable
直接已知的子类:
GZIPInputStream, ZipInputStream

public class InflaterInputStream extends FilterInputStream
该类实现了用于解压缩“deflate”压缩格式数据的流过滤器。它也被用作其他解压缩过滤器的基础,比如GZIPInputStream。
自 JDK 版本:
1.1
参见:
  • Field Details

    • inf

      protected Inflater inf
      该流的解压缩器。
    • buf

      protected byte[] buf
      用于解压缩的输入缓冲区。
    • len

      protected int len
      读入输入缓冲区的总字节数。
  • Constructor Details

    • InflaterInputStream

      public InflaterInputStream(InputStream in, Inflater inf, int size)
      创建一个具有指定解压缩器和缓冲区大小的新输入流。
      参数:
      in - 输入流
      inf - 解压缩器("inflater")
      size - 输入缓冲区大小
      抛出:
      IllegalArgumentException - 如果 size <= 0
    • InflaterInputStream

      public InflaterInputStream(InputStream in, Inflater inf)
      创建一个具有指定解压缩器和默认缓冲区大小的新输入流。
      参数:
      in - 输入流
      inf - 解压缩器("inflater")
    • InflaterInputStream

      public InflaterInputStream(InputStream in)
      创建一个具有默认解压缩器和缓冲区大小的新输入流。
      参数:
      in - 输入流
  • Method Details

    • read

      public int read() throws IOException
      读取一个未压缩数据字节。此方法将阻塞,直到有足够的输入可用于解压缩。
      覆盖:
      read 在类 FilterInputStream
      返回:
      读取的字节,如果达到压缩输入的末尾则返回 -1
      抛出:
      IOException - 如果发生 I/O 错误
    • read

      public int read(byte[] b, int off, int len) throws IOException
      在达到 EOF 后返回 0,否则始终返回 1。

      程序不应该依赖此方法返回可以无阻塞读取的实际字节数。

      覆盖:
      read 在类 FilterInputStream
      参数:
      b - 读入数据的缓冲区
      off - 目标数组 b 的起始偏移量
      len - 最大读取字节数
      返回:
      实际膨胀的字节数,如果达到压缩输入的末尾或需要预设字典则返回 -1
      抛出:
      NullPointerException - 如果 bnull
      IndexOutOfBoundsException - 如果 off 为负数,len 为负数,或 len 大于 b.length - off
      ZipException - 如果发生 ZIP 格式错误
      IOException - 如果发生 I/O 错误
    • available

      public int available() throws IOException
      在达到 EOF 后返回 0,否则始终返回 1。

      程序不应该依赖此方法返回可以无阻塞读取的实际字节数。

      覆盖:
      available 在类 FilterInputStream
      返回:
      在 EOF 前返回 1,在 EOF 后返回 0。
      抛出:
      IOException - 如果发生 I/O 错误
    • skip

      public long skip(long n) throws IOException
      跳过指定数量的未压缩数据字节。
      覆盖:
      skip 在类 FilterInputStream
      参数:
      n - 要跳过的字节数
      返回:
      实际跳过的字节数。
      抛出:
      IOException - 如果发生 I/O 错误
      IllegalArgumentException - 如果 n < 0
    • close

      public void close() throws IOException
      关闭此输入流并释放与该流关联的任何系统资源。
      指定者:
      close 在接口 AutoCloseable
      指定者:
      close 在接口 Closeable
      覆盖:
      close 在类 FilterInputStream
      抛出:
      IOException - 如果发生 I/O 错误
    • fill

      protected void fill() throws IOException
      使用更多数据填充输入缓冲区以进行解压缩。
      实现要求:
      此方法将最多读取 buf.length 字节到输入缓冲区 buf,从元素 0 开始。字段 len 将设置为读取的字节数。
      抛出:
      IOException - 如果发生 I/O 错误
      EOFException - 如果意外到达输入流的结尾
    • markSupported

      public boolean markSupported()
      测试此输入流是否支持 markreset 方法。 InflaterInputStreammarkSupported 方法返回 false
      覆盖:
      markSupported 在类 FilterInputStream
      返回:
      一个表示此流类型是否支持 markreset 方法的 boolean
    • mark

      public void mark(int readlimit)
      标记此输入流的当前位置。
      覆盖:
      mark 在类 FilterInputStream
      实现要求:
      InflaterInputStreammark 方法不执行任何操作。
      参数:
      readlimit - 在标记位置变为无效之前可以读取的最大字节数。
      参见:
    • reset

      public void reset() throws IOException
      将此流重新定位到上次在此输入流上调用 mark 方法时的位置。
      覆盖:
      reset 在类 FilterInputStream
      实现要求:
      InflaterInputStream 类的 reset 方法除了抛出 IOException 外不执行任何操作。
      抛出:
      IOException - 如果调用此方法。
      参见: