网站导航网学 原创论文 网站设计 最新系统 最新研究 原创论文 获取论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计下载 > Java类作品 > 正文

GZIP算法对文件压缩与解压缩的实现程序

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/05/09

【编者按】:网学网Java类作品为您提供GZIP算法对文件压缩与解压缩的实现程序参考,解决您在GZIP算法对文件压缩与解压缩的实现程序学习中工作中的难题,参考学习。

QQ交谈客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn

 

1       详细设计和实现
4.1 压缩的程序流程
压缩程序的实现过程中,涉及到很多类的调用,除了压缩有关的类,还有IO类。对于IO类的调用不考虑的情况下,各个压缩功能类的调用流程(如图7):
1)主程序gzip调用输出过滤流GZIPOutputStream,读取GZIP格式压缩数据,压缩开始。
2)GZIPOutputStream调用CRC32来计算Checksum的数目。
3)在CRC32返回结果后,GZIPOutputStream调用Deflater压缩类来进行压缩。在Deflater类的调用过程中,实现了对数据的压缩字符集确定与编码,也就是实现了LZ77算法、懒惰匹配与Huffman编码的结合。
4)建立压缩文件,调用DeflaterOutputStream来压缩Deflater格式数据
 
这些过程的操作是不能离开IO类的,所以实现这些过程的前提是要有数据流输入,也就是调用FileInputStream,打开需压缩文件作为文件输入流;在以上的流程完毕之后,调用FileOutputStream类建立压缩文件输出流,最终形成压缩后的文件。
4.2 解压缩的程序流程
在解压缩的实现过程中,各个类的调用关系(如图8):
1)主程序ungzip调用GZIPInputStream,读取GZIP格式压缩数据,解压缩开始。
2)GZIPInputStream调用CRC32来计算Checksum的数目。
3)在CRC32返回结果后,调用CheckedInputStream保存被读取数据的Checksum,同时调用Inflater进行解压缩。
4)在Inflater解压缩过程中,如果数据格式错误,则调用DataFormatException;如果没有数据格式错误,则调用InflaterInputStream来解压Inflater格式的压缩数据。
 
 

GZIPInputStream
CheckedInputStream
Checksum
CRC32
Checksum
ungzip
InflaterInputStream
Inflater
DataFormatException
ZipException
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


 

8 解压缩类的调用顺序图
4.3 主函数代码
4.3.1 gzip压缩模块代码
压缩模块要完成的就是将文件读入以后进行压缩,再将压缩后的数据写入一个新的文件,其部分代码如下:
public class gzip
{
public static void main(String[] args)
{
if (args.length !=2)
{
System.out.println("Usage:java gzip ");
System.exit(1);
}
try
{
//打开需压缩文件作为文件输入流
FileInputStream fin=new FileInputStream(args[0]);
//建立压缩文件输出流
FileOutputStream fout=new FileOutputStream(args[1]);
//建立gzip压缩输出流
GZIPOutputStream gzout=new GZIPOutputStream(fout);
byte[] buf=new byte[1024];//设定读入缓冲区尺寸
int num;
 
while ((num=fin.read(buf)) != -1)
{
gzout.write(buf,0,num);
}
gzout.close();//关闭流,必须关闭所有输入输出流.保证输入输出完整和释放系统资源.
fout.close();
fin.close();
}catch(IOException e)
{
System.out.println(e);
}
}
}
4.3.2    ungzip解压缩模块代码
解压缩模块要完成的就是将文件读入以后进行解压缩,再将解压缩后的数据写入一个新的文件,其部分代码如下:
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);
}
}
}
4.4 程序界面设计
为了让用户能便捷地进行压缩与解压缩的操作,还要对程序加入一个可视化界面。其外观如图9:

 
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT

本文选自计算机毕业设计http://myeducs.cn
论文文章部分只是部分简介,如需了解更多详情请咨询本站客服!QQ交谈QQ3710167

原创论文

设为首页 | 加入收藏 | 论文首页 |原创论文 |
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师