博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
J2ME下的Zlib/Gzip/Zip压缩相关
阅读量:4028 次
发布时间:2019-05-24

本文共 1438 字,大约阅读时间需要 4 分钟。

原文链接:

J2ME下的Zlib/Gzip/Zip压缩相关
2010年09月13日 星期一 16:54
一,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对数据流进行压缩和解压。

转载地址:http://timbi.baihongyu.com/

你可能感兴趣的文章
如何打开ipynb文件
查看>>
[Leetcode BY python ]190. Reverse Bits
查看>>
面试---刷牛客算法题
查看>>
Android下调用收发短信邮件等(转载)
查看>>
Android中电池信息(Battery information)的取得
查看>>
SVN客户端命令详解
查看>>
Android/Linux 内存监视
查看>>
Linux系统信息查看
查看>>
用find命令查找最近修改过的文件
查看>>
Android2.1消息应用(Messaging)源码学习笔记
查看>>
在android上运行native可执行程序
查看>>
Phone双模修改涉及文件列表
查看>>
android UI小知识点
查看>>
Android之TelephonyManager类的方法详解
查看>>
android raw读取超过1M文件的方法
查看>>
ubuntu下SVN服务器安装配置
查看>>
MPMoviePlayerViewController和MPMoviePlayerController的使用
查看>>
CocoaPods实践之制作篇
查看>>
[Mac]Mac 操作系统 常见技巧
查看>>
苹果Swift编程语言入门教程【中文版】
查看>>