- java.lang.Object
-
- java.util.zip.Inflater
-
public class Inflater extends Object
此类提供对使用流行的ZLIB压缩库的通用解压缩的支持。 ZLIB压缩库最初是作为PNG图形标准的一部分开发的,不受专利保护。 详细描述在java.util.zip package description的规格。以下代码片段使用
Deflater
和Inflater
演示了对字符串的简单压缩和解压缩。try { // Encode a String into bytes String inputString = "blahblahblah??"; byte[] input = inputString.getBytes("UTF-8"); // Compress the bytes byte[] output = new byte[100]; Deflater compresser = new Deflater(); compresser.setInput(input); compresser.finish(); int compressedDataLength = compresser.deflate(output); // Decompress the bytes Inflater decompresser = new Inflater(); decompresser.setInput(output, 0, compressedDataLength); byte[] result = new byte[100]; int resultLength = decompresser.inflate(result); decompresser.end(); // Decode the bytes into a String String outputString = new String(result, 0, resultLength, "UTF-8"); } catch(java.io.UnsupportedEncodingException ex) { // handle } catch (java.util.zip.DataFormatException ex) { // handle }
- 从以下版本开始:
- 1.1
- 另请参见:
-
Deflater
-
-
方法摘要
所有方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 void
end()
关闭解压缩程序并丢弃任何未处理的输入。protected void
finalize()
已过时。finalize
方法已被弃用。 为了执行清理,覆盖finalize
子类应被修改为使用替代的清理机制,并删除覆盖的finalize
方法。 当覆盖finalize
方法时,其实现必须明确确保按照super.finalize()
中所述调用super.finalize() 。 有关迁移选项的更多信息,请参阅Object.finalize()
的规范。boolean
finished()
如果达到压缩数据流的结尾,则返回true。int
getAdler()
返回未压缩数据的ADLER-32值。long
getBytesRead()
返回到目前为止输入的压缩字节的总数。long
getBytesWritten()
返回到目前为止输出的未压缩字节的总数。int
getRemaining()
返回输入缓冲区中剩余的总字节数。int
getTotalIn()
返回到目前为止输入的压缩字节的总数。int
getTotalOut()
返回到目前为止输出的未压缩字节的总数。int
inflate(byte[] b)
将字节解压缩到指定的缓冲区。int
inflate(byte[] b, int off, int len)
将字节解压缩到指定的缓冲区。boolean
needsDictionary()
如果需要预设字典进行解压缩,则返回true。boolean
needsInput()
如果输入缓冲区中没有数据,则返回true。void
reset()
重新设置充气器,以便可以处理一组新的输入数据。void
setDictionary(byte[] b)
将预设字典设置为给定的字节数组。void
setDictionary(byte[] b, int off, int len)
将预设字典设置为给定的字节数组。void
setInput(byte[] b)
设置解压缩的输入数据。void
setInput(byte[] b, int off, int len)
设置解压缩的输入数据。
-
-
-
方法详细信息
-
setInput
public void setInput(byte[] b, int off, int len)
设置解压缩的输入数据。 每当needInput()返回true时都应调用,表示需要输入更多的数据。- 参数
-
b
- 输入数据字节 -
off
- 输入数据的起始偏移量 -
len
- 输入数据的长度 - 另请参见:
-
needsInput()
-
setInput
public void setInput(byte[] b)
设置解压缩的输入数据。 每当needInput()返回true时都应调用,表示需要输入更多的数据。- 参数
-
b
- 输入数据字节 - 另请参见:
-
needsInput()
-
setDictionary
public void setDictionary(byte[] b, int off, int len)
将预设字典设置为给定的字节数组。 当inflate()返回0并且needsDictionary()返回true时,应该调用,表示需要预设的字典。 方法getAdler()可用于获取所需字典的Adler-32值。- 参数
-
b
- 字典数据字节 -
off
- 数据的起始偏移量 -
len
- 数据的长度 - 另请参见:
-
needsDictionary()
,getAdler()
-
setDictionary
public void setDictionary(byte[] b)
将预设字典设置为给定的字节数组。 当inflate()返回0并且needsDictionary()返回true时,应该调用,表示需要预设的字典。 方法getAdler()可用于获取所需字典的Adler-32值。- 参数
-
b
- 字典数据字节 - 另请参见:
-
needsDictionary()
,getAdler()
-
getRemaining
public int getRemaining()
返回输入缓冲区中剩余的总字节数。 这可以用于查找在解压缩完成后仍然保留在输入缓冲区中的字节。- 结果
- 输入缓冲区中剩余的总字节数
-
needsInput
public boolean needsInput()
如果输入缓冲区中没有数据,则返回true。 这可以用来确定是否应该调用#setInput以便提供更多的输入。- 结果
- 如果输入缓冲区中没有数据,则为true
-
needsDictionary
public boolean needsDictionary()
如果需要预设字典进行解压缩,则返回true。- 结果
- 如果需要预设字典进行解压缩,则为true
- 另请参见:
-
setDictionary(byte[], int, int)
-
finished
public boolean finished()
如果达到压缩数据流的结尾,则返回true。- 结果
- 如果已经达到压缩数据流的结束,则为true
-
inflate
public int inflate(byte[] b, int off, int len) throws DataFormatException
将字节解压缩到指定的缓冲区。 返回实际的未压缩字节数。 返回值为0表示需要调用needsInput()或needsDictionary(),以确定是否需要更多输入数据或预设字典。 在后一种情况下,getAdler()可用于获取所需字典的Adler-32值。- 参数
-
b
- 未压缩数据的缓冲区 -
off
- 数据的起始偏移量 -
len
- 未压缩字节的最大数量 - 结果
- 实际的未压缩字节数
- 异常
-
DataFormatException
- 如果压缩数据格式无效 - 另请参见:
-
needsInput()
,needsDictionary()
-
inflate
public int inflate(byte[] b) throws DataFormatException
将字节解压缩到指定的缓冲区。 返回实际的未压缩字节数。 返回值为0表示需要调用needsInput()或needsDictionary(),以确定是否需要更多输入数据或预设字典。 在后一种情况下,getAdler()可用于获取所需字典的Adler-32值。- 参数
-
b
- 未压缩数据的缓冲区 - 结果
- 实际的未压缩字节数
- 异常
-
DataFormatException
- 如果压缩数据格式无效 - 另请参见:
-
needsInput()
,needsDictionary()
-
getAdler
public int getAdler()
返回未压缩数据的ADLER-32值。- 结果
- 未压缩数据的ADLER-32值
-
getTotalIn
public int getTotalIn()
返回到目前为止输入的压缩字节的总数。由于字节数可能大于Integer.MAX_VALUE,因此
getBytesRead()
方法现在是获取此信息的首选方法。- 结果
- 到目前为止输入的压缩字节总数
-
getBytesRead
public long getBytesRead()
返回到目前为止输入的压缩字节的总数。- 结果
- 到目前为止输入的压缩字节数(非负数)
- 从以下版本开始:
- 1.5
-
getTotalOut
public int getTotalOut()
返回到目前为止输出的未压缩字节的总数。由于字节数可能大于Integer.MAX_VALUE,因此
getBytesWritten()
方法现在是获取此信息的首选方法。- 结果
- 到目前为止,未压缩字节输出的总数
-
getBytesWritten
public long getBytesWritten()
返回到目前为止输出的未压缩字节的总数。- 结果
- 迄今为止输出的未压缩字节数(非负数)
- 从以下版本开始:
- 1.5
-
reset
public void reset()
重新设置充气器,以便可以处理一组新的输入数据。
-
end
public void end()
关闭解压缩程序并丢弃任何未处理的输入。 当解压缩程序不再被使用时,应该调用此方法,也可以通过finalize()方法自动调用该方法。 一旦调用此方法,Inflater对象的行为是未定义的。
-
finalize
@Deprecated(since="9") protected void finalize()
已过时。finalize
方法已被弃用。 为了执行清理而覆盖finalize
子类应该修改为使用替代的清理机制,并删除覆盖的finalize
方法。 当覆盖finalize
方法时,其实现必须明确确保按照super.finalize()
中的描述调用super.finalize() 。 有关迁移选项的更多信息,请参阅Object.finalize()
的规范。收集垃圾时关闭解压缩程序。- 重写:
-
finalize
在Object
- 另请参见:
-
WeakReference
,PhantomReference
-
-