- 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 方法 描述 voidend()关闭解压缩程序并丢弃任何未处理的输入。protected voidfinalize()已过时。finalize方法已被弃用。 为了执行清理,覆盖finalize子类应被修改为使用替代的清理机制,并删除覆盖的finalize方法。 当覆盖finalize方法时,其实现必须明确确保按照super.finalize()中所述调用super.finalize() 。 有关迁移选项的更多信息,请参阅Object.finalize()的规范。booleanfinished()如果达到压缩数据流的结尾,则返回true。intgetAdler()返回未压缩数据的ADLER-32值。longgetBytesRead()返回到目前为止输入的压缩字节的总数。longgetBytesWritten()返回到目前为止输出的未压缩字节的总数。intgetRemaining()返回输入缓冲区中剩余的总字节数。intgetTotalIn()返回到目前为止输入的压缩字节的总数。intgetTotalOut()返回到目前为止输出的未压缩字节的总数。intinflate(byte[] b)将字节解压缩到指定的缓冲区。intinflate(byte[] b, int off, int len)将字节解压缩到指定的缓冲区。booleanneedsDictionary()如果需要预设字典进行解压缩,则返回true。booleanneedsInput()如果输入缓冲区中没有数据,则返回true。voidreset()重新设置充气器,以便可以处理一组新的输入数据。voidsetDictionary(byte[] b)将预设字典设置为给定的字节数组。voidsetDictionary(byte[] b, int off, int len)将预设字典设置为给定的字节数组。voidsetInput(byte[] b)设置解压缩的输入数据。voidsetInput(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
-
-