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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java程序员的自我修养?

论Java程序员的自我修养,相信很多人一开始都觉得软件以后会前程似锦,可以一展才华,每一个参加Java软件开发培训班或者自学Java编程的学员都相信Java的发展前景,对于零基础学员而言自学Java软件开会有很大的难度,但是只…

gdal java api_Java使用GDAL库

GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。GDAL官方网址:http://www.gdal.org/,它能支持当前流行的各…

java reflectionutils_Spring中的各种Utils(五):ReflectionUtils详解(转载)

原文出处:https://blog.csdn.net/wolfcode_cn/article/details/80660515原创文章,转载请注明出处。本节中,我们来看看Spring针对反射提供的工具类:ReflectionUtils。反射在容器中使用是非常频繁的了,ReflectionUtils中…

Java有快速打好基础的方法?

对于初学者而言,不要妄想在短时间内快速掌握Java的全部内容,一开始打好基础很重要,而且越大的公司,越注重考察你对基础的深入理解。 一、Java基础知识包括: Java基础(Java面向对象,常用基础类&#xff0c…

Java的一些学习心得

俗话说的好,勤能补拙。这话放到Java学习中非常适用,众所周知,专业的培训都是高强度的培训,想要吸收一天的学习内容也并非容易,但是确实有人可以做到。是谁?勤奋的人!勤奋的人可以利用课下时间梳…

java企业人事管理系统源码_企业人事管理系统完美版源代码 - 源码下载|行业应用软件|企业管理(财务/ERP/EIP等)|源代码 - 源码中国...

企业人事管理系统完美版源代码............................\DataEnvironment.DCA............................\DataEnvironment.Dsr............................\DataEnvironment.OBJ............................\DataReMove.DCA............................\DataReMove.D…

自学Java编程要做好哪些准备?

Java编程可谓是经得起时间的考验,时隔20多年,依然没有淘汰,那如果我们自学Java需要做哪些准备呢?小编今天就来分析一下。 学习Java编程这个事情,最重要的还是靠自己来学习的,Java培训只是给自己一个成为Ja…

java substring 越界_我在java中用substrng()提取某一字符串的子串是老是出现越界的问题,求指教~~~...

下述程序是为了提取文本域中的文本,并写入一个文件(写入时要和文本框中的格式一样,即也要有换行)inti0;JFileChooserfcnewJFileChooser();fc.showSaveDialog(null);Filefilefc....下述程序是为了提取文本域中的文本,并写入一个文件(写入时要和…

Java程序员需要了解的两种服务器设计模型

我们在IO模型和Java网络编程模型中,对IO有了一定的理解。这一篇,主要讲解基于事件驱动的两种是在原来基础上的扩展。在基于事件驱动的网络编程模型中,Reactor和Proactor模型是两种常用的IO设计模型。 我们知道BIO(阻塞IO&#xf…

java在线网页客服聊天_管理员消息java 网站用户在线和客服聊天

首先声明,我是一个菜鸟。一下文章中出现技术误导情况盖不负责这是应用到项目中的一个例子。实现原理是将信息存储到Application域里面。然后应用Struts2 Action 用json格式的数据停止前后台交互。截图:前台用户界面:后台客服界面:…

java语言的未来将去向何方?

Java在IT编程占有举足亲重的地位,那么很多小伙伴都关心Java的未来,未来java需求如何?java语言去向何方? Java的生态圈决定了这门语言在未来10年都会是最热门的语言之一,因为Java技术具有卓越的通用性、高效性、安全性…

JAVA计时函数的库_JAVA开发常用类库UUID、Optional、ThreadLocal、TimerTask、Base64使用方法与实例详解...

1、UUID类库UUID 根据时间戳实现自动无重复字符串定义// 获取UUIDpublic static UUID randomUUID()// 根据字符串获取UUIDpublic static UUID fromString(String name)应用:对文件进行自动命名处理import java.util.UUID;class Demo {public static void main(Strin…

Java程序员越来越多工资反而越高?

Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。Java略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾收集大大简化了程…

java fileinputstream.read(byte[])_Java分享笔记:FileInputStream流的 read()方法 和 read(byte[] b)方法...

1 /*------------------------ 2 FileInputStream: 3 ....//输入流,字节流 4 ....//从硬盘中存在的一个文件中读取内容,读取到程序中 5 ....//read()方法:从此输入流中读取一个数据字节 6 ....//read(byte[] b)方法:从此输入流中将…

10个理由告诉你为何要学Java编程?

为什么要学习Java编程语言?这个只要学习Java的小伙伴都会有答案,比如它的易学、面向对象,开源工具和库等。在Java中获得经验可以确保有一个收入丰厚的工作岗位。有一长串的编程语言仍然存在它们的优点和缺点,使我们的生活更容易。…

java股票数据_java抓取东方财富股票数据(附源码)

背景前段时间给朋友写了一个自动抓取同花顺股票数据的程序,不少人觉得不错。这几天后台有粉丝给我留言让我也抓一下东方财富的数据,说东方财富的数据特别难抓,我还真不一定能搞得定。本来我是一个德艺双磬且与世无争的佛系程序员,…

JDK文档是Java程序开发不可缺少的编程词典

Java 构建商业应用程序或者某种物联网设备,构建了Android 操作系统,它为智能手机行业做出了杰出的贡献。借助 Android 操作系统,手机厂商才得以在早期与黑莓抗衡,之后又能够打破苹果的主导地位。 JDK文档包含有关Java API、Java命…

java string 转 inputstream_String和inputstream互转【转文】

URLConnection urlConn url.openConnection(); // 打开网站链接sBufferedReader reader new BufferedReader(new InputStreamReader(urlConn.getInputStream(), "UTF-8")); // 实例化输入流,并获取网页代码String s; // 依次循环,至到读的值…

如何准备Java初级和高级技术的面试呢?

IT行业的崛起带动了一大批的新兴职业,Java数据开发就是其中之一,作为IT行业的刚需职位,企业对合格的Java开发人员求贤若渴, 在各大主流招聘平台上, Java相关职位数量一直名列前茅,那么我们如何准备Java初级和高级技术的面试呢&…

新手学完Java可以面试哪些岗位?

在这个个时代是互联网时代,也是JavaEE人才稀缺的时代。由于中国人才缺口比较大,JavaEE也迅速成为行业和市场的热点,更多的企业无论是对人才的招聘还是在培训都成了市场刚需,这也促使JavaEE人才的薪资在同岗位中是最高的&#xff0…