| Java文件压缩与解压缩实践GZIP,JBuilder2006 |
|
| 设计类别:JSP毕业设计 文章来源:www.lw63.com 计算机论文 | 【字体:小 大】 |
|
随着科学技术的进步,信息技术越来越广泛地应用到社会的各个行业和领域,互联网深刻地改变着人们的生活方式,推动着人类文明的进步。伴随着信息技术的普及和发展,互联网技术覆盖了社会政治、经济、文化、生产的各个领域,这种普及日常生活和工作更加的方便、文化娱乐方式更加的多样化。但是,在信息技术的飞速发展下,文件的信息量不断增加的背景下,文件的存储和拷贝要求能够保持数据的意思不变的情况下缩小容量,这就需要有压缩与解压缩来实现这个过程。本论文通过对一种压缩与解压缩方法的实践,对这种算法的实现过程进行研究。
毕业设计 www.lw63.com 论文路上
GZIP使用deflate算法进行压缩。zlib,以及图形格式png,使用的压缩算法也是deflate算法。GZIP对于要压缩的文件,首先使用LZ77算法的一个变种进行压缩,对得到的结果再使用Huffman编码的方法(GZIP根据情况,选择使用静态Huffman编码或者动态Huffman编码)进行压缩。LZ77算法和Huffman编码结合起来,就是deflate算法的根本实现方法,也就是GZIP的压缩原理。 懒惰匹配(lazy match)是GZIP中对LZ77算法的改进,实现过程如下: 在压缩过程中,对于当前字节开始的串,寻找到了最长匹配之后,GZIP并不立即决定使用这个串进行替换。而是看看这个匹配长度是否满意,如果匹配长度不满意,而下一个字节开始的串也有匹配串的话,那么GZIP就找到下一个字节开始的串的最长匹配,看看是不是比现在这个长。这就是懒惰匹配。 如果比现在这个长的话,将不使用现在的这个匹配。如果比现在这个短的话,将确定使用现在的这个匹配。发现第二次匹配的匹配长度大,就不使用第一次的匹配串。如果直接使用第一次匹配的话,有可能将错过更长的匹配串。
毕业设计 www.lw63.com 论文路上
解压缩模块要完成的就是将文件读入以后进行解压缩,再将解压缩后的数据写入一个新的文件,其部分代码如下: public class ungzip { public static void main(String[] args) { if (args.length !=2) { System.out.println("Usage:java ungzip "); System.exit(1); } try { //建立gzip压缩文件输入流 FileInputStream fin=new FileInputStream(args[0]); //建立gzip解压工作流 GZIPInputStream gzin=new GZIPInputStream(fin); //建立解压文件输出流 FileOutputStream fout=new FileOutputStream(args[1]); byte[] buf=new byte[1024]; int num;
while ((num=gzin.read(buf,0,buf.length)) != -1) { fout.write(buf,0,num); } gzin.close(); fout.close(); fin.close(); }catch(IOException e) { System.out.println(e); } } }
|
|
|
|
|