【编者按】:网学网Java类作品为您提供GZIP算法对文件压缩与解压缩的实现程序参考,解决您在GZIP算法对文件压缩与解压缩的实现程序学习中工作中的难题,参考学习。
客服咨询,网学网竭诚为您服务,本站永久域名: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格式数据。 4.2 解压缩的程序流程 在解压缩的实现过程中,各个类的调用关系(如图8): (1)主程序ungzip调用GZIPInputStream,读取GZIP格式压缩数据,解压缩开始。 (2)GZIPInputStream调用CRC32来计算Checksum的数目。 (3)在CRC32返回结果后,调用CheckedInputStream保存被读取数据的Checksum,同时调用Inflater进行解压缩。 (4)在Inflater解压缩过程中,如果数据格式错误,则调用DataFormatException;如果没有数据格式错误,则调用InflaterInputStream来解压Inflater格式的压缩数据。
图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 |