- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- java.util.zip.InflaterInputStream
-
- All Implemented Interfaces:
-
Closeable
,AutoCloseable
- 已知直接子类:
-
GZIPInputStream
,ZipInputStream
public class InflaterInputStream extends FilterInputStream
该类实现了一个流过滤器,用于以“deflate”压缩格式解压缩数据。 它也被用作其他减压滤波器的基础,如GZIPInputStream。- 从以下版本开始:
- 1.1
- 另请参见:
-
Inflater
-
-
构造方法摘要
构造方法 Constructor 描述 InflaterInputStream(InputStream in)
使用默认解压缩器和缓冲区大小创建新的输入流。InflaterInputStream(InputStream in, Inflater inf)
使用指定的解压缩器和默认缓冲区大小创建新的输入流。InflaterInputStream(InputStream in, Inflater inf, int size)
使用指定的解压缩器和缓冲区大小创建新的输入流。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 int
available()
到达EOF后返回0,否则总是返回1。void
close()
关闭此输入流并释放与流相关联的任何系统资源。protected void
fill()
填写输入缓冲区以获得更多的数据解压缩。void
mark(int readlimit)
标记此输入流中的当前位置。boolean
markSupported()
测试此输入流是否支持mark
和reset
方法。int
read()
读取一个字节的未压缩数据。int
read(byte[] b, int off, int len)
将未压缩的数据读入字节数组。void
reset()
将此流重新定位到最后在此输入流上调用mark
方法时的位置。long
skip(long n)
跳过未压缩数据的指定字节数。-
Methods inherited from class java.io.FilterInputStream
read
-
Methods inherited from class java.io.InputStream
readAllBytes, readNBytes, transferTo
-
-
-
-
字段详细信息
-
inf
protected Inflater inf
解压缩此流。
-
buf
protected byte[] buf
用于解压缩的输入缓冲区。
-
len
protected int len
输入缓冲区的长度。
-
-
构造方法详细信息
-
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
- 输入流
-
-
方法详细信息
-
read
public int read() throws IOException
读取一个字节的未压缩数据。 该方法将阻塞,直到有足够的输入可用于解压缩。- 重写:
-
read
在FilterInputStream
- 结果
- 读取字节,如果达到压缩输入结束,则返回-1
- 异常
-
IOException
- 如果发生I / O错误 - 另请参见:
-
FilterInputStream.in
-
read
public int read(byte[] b, int off, int len) throws IOException
将未压缩的数据读入字节数组。 如果len
不为零,则该方法将阻塞,直到可以解压缩某些输入; 否则,不会读取字节,并返回0
。- 重写:
-
read
在FilterInputStream
- 参数
-
b
- 读取数据的缓冲区 -
off
- 目标数组b
的起始偏移量 -
len
- 读取的最大字节数 - 结果
- 读取的实际字节数,如果达到压缩输入的结尾或需要预设字典,则为-1
- 异常
-
NullPointerException
- 如果b
是null
。 -
IndexOutOfBoundsException
- 如果off
为负,则len
为负数,或len
大于b.length - off
-
ZipException
- 如果发生ZIP格式错误 -
IOException
- 如果发生I / O错误 - 另请参见:
-
FilterInputStream.in
-
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
关闭此输入流并释放与流相关联的任何系统资源。- Specified by:
-
close
在接口AutoCloseable
- Specified by:
-
close
在接口Closeable
- 重写:
-
close
在FilterInputStream
- 异常
-
IOException
- 如果发生I / O错误 - 另请参见:
-
FilterInputStream.in
-
fill
protected void fill() throws IOException
填写输入缓冲区以获得更多的数据解压缩。- 异常
-
IOException
- 如果发生I / O错误
-
markSupported
public boolean markSupported()
测试此输入流是否支持mark
和reset
方法。 该markSupported
方法InflaterInputStream
回报false
。- 重写:
-
markSupported
在FilterInputStream
- 结果
-
一个
boolean
指示这种流类型是否支持mark
和reset
方法。 - 另请参见:
-
InputStream.mark(int)
,InputStream.reset()
-
mark
public void mark(int readlimit)
标记此输入流中的当前位置。该
mark
的方法InflaterInputStream
什么都不做。- 重写:
-
mark
在FilterInputStream
- 参数
-
readlimit
- 在标记位置无效之前可以读取的最大字节数限制。 - 另请参见:
-
InputStream.reset()
-
reset
public void reset() throws IOException
将此流重新定位到上次在此输入流上调用mark
方法时的位置。该方法
reset
类InflaterInputStream
什么也不做只是抛出一个IOException
。- 重写:
-
reset
在FilterInputStream
- 异常
-
IOException
- 如果这个方法被调用。 - 另请参见:
-
InputStream.mark(int)
,IOException
-
-