deflater java_java.util.zip 类 Deflater - Java 中文参考手册

java.lang.Object

c8e9f4e075d37a0af332e4af80182959.gifjava.util.zip.Deflater

public class Deflaterextends Object

此类使用流行的 ZLIB 压缩程序库为通用压缩提供支持。ZLIB 压缩程序库最初是作为 PNG 图形标准的一部分开发的,不受专利的保护。有关该规范的完整描述,请参见 java.util.zip 包描述。

以下代码片段演示使用 Deflater 和 Inflater 压缩和解压缩字符串的详细过程。

// 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");

另请参见:Inflater

字段摘要

staticint

BEST_COMPRESSION

最佳压缩的压缩级别。

staticint

BEST_SPEED

最快压缩的压缩级别。

staticint

DEFAULT_COMPRESSION

默认压缩级别。

staticint

DEFAULT_STRATEGY

默认压缩策略。

staticint

DEFLATED

deflate 算法(当前支持的惟一算法)的压缩方法。

staticint

FILTERED

最适用于主要由小值组成并具有某种程度随意分布的数据的压缩策略。

staticint

HUFFMAN_ONLY

仅适用于 Huffman 编码的压缩策略。

staticint

NO_COMPRESSION

无压缩的压缩级别。

构造方法摘要

Deflater()

使用默认压缩级别创建新的压缩器。

Deflater(intlevel)

使用指定压缩级别创建新的压缩器。

Deflater(intlevel,

booleannowrap)

使用指定压缩级别创建新的压缩器。

方法摘要

int

deflate(byte[]b)

使用压缩数据填充指定缓冲区。

int

deflate(byte[]b,

intoff,

intlen)

使用压缩数据填充指定缓冲区。

void

end()

关闭解压缩器并放弃所有未处理的输入。

protected void

finalize()

回收垃圾时关闭压缩器。

void

finish()

调用时,指示压缩应当以输入缓冲区的当前内容结尾。

boolean

finished()

如果已到达压缩数据输出流的结尾,则返回 true。

int

getAdler()

返回未压缩数据的 ADLER-32 值。

long

getBytesRead()

返回到目前为止输入未压缩字节的总数。

long

getBytesWritten()

返回到目前为止输出压缩字节的总数。

int

getTotalIn()

返回到目前为止输入未压缩字节的总数。

int

getTotalOut()

返回到目前为止输出压缩字节的总数。

boolean

needsInput()

如果输入数据缓冲区为空,并且应调用 setInput() 以提供更多输入,则返回 true。

void

reset()

重置 deflater 以处理新的输入数据集合。

void

setDictionary(byte[]b)

为压缩预置字典。

void

setDictionary(byte[]b,

intoff,

intlen)

为压缩设置预置字典。

void

setInput(byte[]b)

为压缩设置输入数据。

void

setInput(byte[]b,

intoff,

intlen)

为压缩设置输入数据。

void

setLevel(intlevel)

将当前压缩级别设置为指定值。

void

setStrategy(intstrategy)

将压缩策略设置为指定值。

从类 java.lang.Object 继承的方法

clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段详细信息

DEFLATED

public static final int DEFLATED

deflate 算法(当前支持的惟一算法)的压缩方法。

另请参见:常量字段值

NO_COMPRESSION

public static final int NO_COMPRESSION

无压缩的压缩级别。

另请参见:常量字段值

BEST_SPEED

public static final int BEST_SPEED

最快压缩的压缩级别。

另请参见:常量字段值

BEST_COMPRESSION

public static final int BEST_COMPRESSION

最佳压缩的压缩级别。

另请参见:常量字段值

DEFAULT_COMPRESSION

public static final int DEFAULT_COMPRESSION

默认压缩级别。

另请参见:常量字段值

FILTERED

public static final int FILTERED

最适用于主要由小值组成并具有某种程度随意分布的数据的压缩策略。强制使用较多的 Huffman 编码和较少的字符串匹配。

另请参见:常量字段值

HUFFMAN_ONLY

public static final int HUFFMAN_ONLY

仅适用于 Huffman 编码的压缩策略。

另请参见:常量字段值

DEFAULT_STRATEGY

public static final int DEFAULT_STRATEGY

默认压缩策略。

另请参见:常量字段值

构造方法详细信息

Deflater

public Deflater(intlevel,

booleannowrap)

使用指定压缩级别创建新的压缩器。如果 ‘nowrap’ 为 true,则不使用 ZLIB 头和校验和字段,以便支持在 GZIP 和 PKZIP 中使用的压缩格式。

参数:level – 压缩级别 (0-9)nowrap – 如果为 true ,则使用 GZIP 兼容的压缩

Deflater

public Deflater(intlevel)

使用指定压缩级别创建新的压缩器。压缩的数据将以 ZLIB 格式生成。

参数:level – 压缩级别 (0-9)

Deflater

public Deflater()

使用默认压缩级别创建新的压缩器。压缩的数据将以 ZLIB 格式生成。

方法详细信息

setInput

public void setInput(byte[]b,

intoff,

intlen)

为压缩设置输入数据。此方法应该在 needsInput() 返回 true 时调用,以指示需要更多的输入数据。

参数:b – 输入数据字节off – 数据的初始偏移量len – 数据的长度另请参见:needsInput()

setInput

public void setInput(byte[]b)

为压缩设置输入数据。此方法应该在 needsInput() 返回 true 时调用,以指示需要更多的输入数据。

参数:b – 输入数据字节另请参见:needsInput()

setDictionary

public void setDictionary(byte[]b,

intoff,

intlen)

为压缩设置预置字典。预置字典在历史缓冲区可预定时使用。当以后使用 Inflater.inflate() 取消压缩数据时,可以调用 Inflater.getAdler() 来获取解压缩所需字典的 Adler-32 值。

参数:b – 字典数据字节off – 数据的初始偏移量len – 数据的长度另请参见:Inflater.inflate(byte[], int, int),

Inflater.getAdler()

setDictionary

public void setDictionary(byte[]b)

为压缩预置字典。预置字典在历史缓冲区可预定时使用。当以后使用 Inflater.inflate() 取消压缩数据时,可以调用 Inflater.getAdler() 来获取解压缩所需字典的 Adler-32 值。

参数:b – 字典数据字节另请参见:Inflater.inflate(byte[], int, int),

Inflater.getAdler()

setStrategy

public void setStrategy(intstrategy)

将压缩策略设置为指定值。

参数:strategy – 新的压缩策略抛出:IllegalArgumentException – 如果压缩策略无效

setLevel

public void setLevel(intlevel)

将当前压缩级别设置为指定值。

参数:level – 新的压缩级别 (0-9)抛出:IllegalArgumentException – 如果压缩级别无效

needsInput

public boolean needsInput()

如果输入数据缓冲区为空,并且应调用 setInput() 以提供更多输入,则返回 true。

返回:如果输入数据缓冲区为空,并且应调用 setInput() 以提供更多输入,则返回 true

finish

public void finish()

调用时,指示压缩应当以输入缓冲区的当前内容结尾。

finished

public boolean finished()

如果已到达压缩数据输出流的结尾,则返回 true。

返回:如果已到达压缩数据输出流的结尾,则返回 true

deflate

public int deflate(byte[]b,

intoff,

intlen)

使用压缩数据填充指定缓冲区。返回压缩数据的实际字节数。返回值为 0 指示应调用 needsInput() 来确定是否需要更多的输入数据。

参数:b – 压缩数据的缓冲区off – 数据的初始偏移量len – 压缩数据的最大字节数返回:压缩数据的实际字节数

deflate

public int deflate(byte[]b)

使用压缩数据填充指定缓冲区。返回压缩数据的实际字节数。返回值为 0 指示应调用 needsInput() 来确定是否需要更多的输入数据。

参数:b – 压缩数据的缓冲区返回:压缩数据的实际字节数

getAdler

public int getAdler()

返回未压缩数据的 ADLER-32 值。

返回:未压缩数据的 ADLER-32 值

getTotalIn

public int getTotalIn()

返回到目前为止输入未压缩字节的总数。

由于该字节数可能大于 Integer.MAX_VALUE,因此 getBytesRead() 方法现在是获取此信息的首选方法。

返回:到目前为止输入未压缩字节的总数

getBytesRead

public long getBytesRead()

返回到目前为止输入未压缩字节的总数。

返回:到目前为止输入未压缩字节的总数(非负)

getTotalOut

public int getTotalOut()

返回到目前为止输出压缩字节的总数。

由于该字节数可能大于 Integer.MAX_VALUE,因此 getBytesWritten() 方法现在是获取此信息的首选方法。

返回:到目前为止输出压缩字节的总数

getBytesWritten

public long getBytesWritten()

返回到目前为止输出压缩字节的总数。

返回:到目前为止输出压缩字节的总数(非负)

reset

public void reset()

重置 deflater 以处理新的输入数据集合。保持当前压缩级别和策略设置。

end

public void end()

关闭解压缩器并放弃所有未处理的输入。此方法应该在不再使用该压缩器时调用,但是也可以由 finalize() 方法自动调用。调用此方法后,Deflater 对象的行为将是不确定的。

finalize

protected void finalize()

回收垃圾时关闭压缩器。

覆盖:类 Object 中的 finalize

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值