【毕业设计】基于JAVA文件压缩与解压缩实践(源代码+论文)

本文介绍了一个毕业设计项目,该项目专注于使用Java实现GZIP算法进行文件的无损压缩和解压缩。通过LZ77字典算法、Huffman编码和懒惰匹配算法,设计了压缩和解压缩模块,分别详细阐述了这两个模块的流程和实现细节。此外,文章还提到了程序中涉及的多个相关类的定义。
摘要由CSDN通过智能技术生成

这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的理念缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的各类系统很难达到老师的要求。

为了大家能够顺利并以最少的精力通过毕设,学长分享优质毕业设计项目,需要的自取。

目录

1.说明

2.总体设计

2.1程序功能模块

​​​​​​​2.2模块分析与流程图

​​​​​​​2.2.1.压缩模块

​​​​​​​2.2.2.解压缩模块

​​​​​​​2.3.程序中各个类的初步定义


1.说明

随着人们对数据的大量需求以及计算机使用时间的增加,计算机磁盘上的文件越来越大,越来越多。如何让有限的磁盘空间容纳更多的数据成为需要解决的问题。一方面,高速发展的存储技术以提高磁盘容量来解决这样的需求,但随着网络环境下数据传递的产生以及带宽的限制,大容量数据问题日益突出。在这两种需求的推动下,对数据压缩的需求产生了。人们可以将文件在不改变其本身的条件下,将其以更小的占用空间存储,并且在需要的时候将文件恢复成原有的样子,这就是压缩目的。本论文主要研究文件的无损压缩技术,并简要介绍了文件压缩的分类、几种常用的无损压缩格式和常用的压缩算法。运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩操作。

2.总体设计

系统总体结构设计是系统设计过程中及其重要的一步,对系统的技术层次,开发过程,功能实现及开发成本方面具有重大的影响。系统总统结构设计应尽可能的考虑人机关系,环境条件以及算法的可行性等的联系,使系统每个部分都能协调适应。

本实验论证是基于GZIP算法理论体系的,因此使用的压缩方法是参照GZIP算法的。GZIP算法理论体系主要包含三个内容:LZ77算法,Huffman算法,懒惰匹配算法。因此在设计过程中要注意如何实现这三个算法并且将其结合起来。

​​​​​​​2.1程序功能模块

根据设计思路,文件的压缩和解压缩是两个相反的操作,程序可分为GZIP压缩模块、UNGZIP压缩模块。现在设计出功能结构图如图。

 

​​​​​​​2.2分析与流程图

分析程序的总体流程图:

 

​​​​​​​2.2.1.压缩模块

压缩模块的实现流程为:

(1)打开要压缩的文件,使用字典算法扫描文件统计文件使用的字符集并统计每个字符集的使用次数。

(2)根据扫描的结果构建文件字符集的Huffman树。

(3)由文件的Huffman树求字符集中各字符的编码,形成Huffman编码表。

(4)建立压缩文件。

(5)将要压缩文件的字符集大小和文件的大小写入压缩文件。将字符集的Huffman树写入压缩文件,供解压缩时使用。

(6)从文件中读取一个字符集,查Huffman编码表,得到它的Huffman编码。按位流放入压缩文件的写缓冲区。

(7)检查压缩文件的写缓冲区,如果已满一个字节,写入压缩文件,如果要压缩的文件没有达到文件的结尾,转到步骤6。

(8)关闭要压缩文件和压缩文件

画出流程图如图:

 

​​​​​​​2.2.2.解压缩模块

解压缩模块的实现流程为:

(1)打开压缩文件,读取字符集字符个数和文件的字节数。读入文件的Huffman树。

(2)建立解压缩文件。

(3)读入一个字节的编码,用Huffman树得到字符,将字符写入解压缩文件,如果编码已用完,就读取下一个字节,如此重复,直到读取压缩文件的全部编码。

(4)关闭压缩文件和解压缩文件。

画出流程图如图:

 

​​​​​​​2.3.程序中各个类的初步定义

为了完成此程序,应当设计一个接口,十四个类,和二个异常处理类。其中

接口:Checksum。

类:

Adler32;CRC32;CheckedInputStream;CheckedOutputStream;Deflater;DeflaterOutputStream;GZIPInputStream;GZIPOutputStream;Inflater;InflaterInputStream;ZipEntry;ZipFile;ZipInputStream;ZipOutputStream。

异常索引:DataFormatException;ZipException。

 其他内容就不一一展示了,如需对应相关资料,可以评论或者下方联系我,私信都可以。.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

宇瑞毕设程序

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

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

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

打赏作者

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

抵扣说明:

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

余额充值