可用于J2ME的GZip算法包

这篇文章介绍了J2ME下如何使用GZip进行压缩和解压(压缩时占用资源比较大)。 同时也更新了最新的代码,代码位于(http://code.google.com/p/agrep4me/)。 一,gzip格式简介 gzip是基于DEFLATE的压缩文件格式。它由10字节的文件头,可选的扩展头,文件体(DEFLATE压缩的数据),和8字节的尾注4个部分组成。现今已经成为Internet 上使用非常普遍的一种数据压缩格式。(http://zh.wikipedia.org/wiki/Gzip) DEFLATE是同时使用了LZ77算法与Huffman编码的字典型无损数据压缩算法(先用lz77算法进行压缩,然后对其结果再使用 Huffman编码的方法进行压缩)。DEFLATE最初是作为LZW以及其它受专利保护的数据压缩算法的替代版本而设计的。当时那些专利限制了压缩算法的应用,而DEFLATE则不受任何专利所制约。(http://zh.wikipedia.org/wiki/DEFLATE) LZ77算法通过使用编码器或者解码器中已经出现过的相应匹配数据信息替换当前数据(字典)从而实现压缩功能。(http://zh.wikipedia.org/wiki/LZ77与LZ78) Huffman编码是一种用于无损数据压缩的熵编码(权编码)算法。该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码。(http://zh.wikipedia.org/wiki/霍夫曼编码) 二,J2ME与 gzip zlib是使用DEFLATE算法,提供压缩功能的函数库。后来普遍为许多软件所使用,逐渐成为事实上的业界标准。它是一个自由软件,使用 zlib授权。(http://www.zlib.net/) java4ever提供了一个非常小巧的用于J2ME的gzip解压缩类库,但它不支持压缩。(http://www.java4ever.com /index.php?section=j2me&project;=gzip& amp;menu;=main〈=_en) jzlib是zlib的Java实现版本。幸运的是,它只需要做简单修改,即可用于J2ME。(http://www.jcraft.com /jzlib/) J2ME Polish的源码中也提供了一个不错的gzip类库。(http://www.j2mepolish.org) 三,实践 1,将jzlib移植到J2ME 移植非常容易,仅需要将ZinputStream类中的FilterInputStream替换成InputStream即可。 代码可从(http://code.google.com/p/jzlib4me/)获取。其中有一个简单的示范,请仔细查看代码中的 README,跟去其中的描述选择合适的使用方法。 2,使用J2ME Polish提供的gzip类库 在J2ME Polish的de.enough.polish.util包中,提供了一个ZipUtil.java类。使用它可以很方便的进行gzip的压缩与解压。 例如: ZipUtil.compress(byte[] data); ZipUtil.decompress(byte[] data); 使用这两个方法即可对data进行压缩和解压缩,并返回结果。 如果操作的数据比较大,可以使用de.enough.polish.util.zip包中的GZipInputStream和 GZipOutputStream对数据流进行压缩和解压。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜡台

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值