基于JAVA实现的文件压缩与解压缩

Scavengers

发布日期: 2019-02-10 16:08:44 浏览量: 184
评分:
star star star star star star star star_border star_border star_border
*转载请注明来自write-bug.com

一、描述

本文件压缩程序主要是实现对文件以及文件夹的压缩和解压功能。

1.1 压缩

压缩程序可以对单个文件以及一个文件夹进行压缩,并且可以输入或者通过文件选择对话框方便的选择压缩后文件的存储路径。

压缩文件时,用户可以在第一个文本框中输入要压缩的文件路径,也可以通过浏览按钮在弹出的文件选择对话框中选择要压缩的文件或文件夹;同样用户可以在第二个文本框中输入压缩后的文件存储路径,或者通过浏览按钮选择文件的存储路径,或者什么都不选,采用程序默认的储存路径即当前的文件路径。选择完毕之后,点击“开始压缩”按钮,程序就可以按照用户的要求进行压缩了。

1.2 解压

解压程序可以解压单个文件,同时对压缩的文件夹,程序也可以正确的恢复压缩前的目录并且解压其中的文件。

解压文件时,用户可以在第一个文本框中输入要解压的文件路径和文件名,也可以通过浏览按钮在弹出的文件选择对话框中选择要解压的文件;同样用户可以在第二个文本框中输入解压后的文件存储路径,或者通过浏览按钮选择文件的存储路径,或者什么都不选,采用程序默认的储存路径即当前的文件路径。选择完毕之后,点击“开始解压”按钮,程序就可以按照用户的要求进行解压了。

1.3 程序界面

程序运行后会出现一个图形界面的对话窗口,窗口包含两个文本输入框,两个文件选择的按钮,一个开始压缩按钮,一个开始解压按钮。

二、设计

2.1 总体设计

首先绘制图形界面的对话窗口,根据程序要实现文件压缩和解压的功能,应该让用户输入文件路径,包括压缩路径和解压路径,所以应该有两个文本输入窗口,用于接收文件路径,然后出于使用方便考虑可以添加两个文件选择按钮,让用户可以通过选择对话框,给出文件路径,使用更加方便,最后需要添加压缩和解压开始的按钮,这样用户点击了开始压缩或者解压的按钮之后,程序获得文件压缩和解压的路径,就可以调用压缩或者解压程序进行压缩或者解压了。

2.1 压缩

压缩程序是将一个文件夹或文件通过java中java.util.zip.*包的ZipInputStream()函数对文件进行压缩的。每当压缩一个文件之前,需要用putNextEntry(ZipEntry)放入要压缩文件的ZipEntry,然后再进行文件的压缩,这样即可实现单个文件的压缩,而对于文件夹要做的就是遍历文件夹中所有的文件一个个的对其进行压缩,所以可以用递归,来遍历整个文件夹。

递归压缩文件夹思路就是判断当前条目是目录还是文件,如果是目录就通过File类的listFiles()方法获得此文件夹下一层所有条目,如果获得条目数为零,说明是个空文件夹,这时需要写入一个空文件夹的ZipEntry,否则文件夹不空,则让获得的每一个条目调用此函数;否则,说明此条目是一个文件,则直接压缩此文件即可。这样文件夹包括文件的压缩就一块完成了。

2.2 解压

解压程序就是将一个压缩文件解压成原来的文件夹或文件,其中包括对文件内容的解压以及对文件夹目录的恢复。

解压程序的思路就是打开一个ZipInputStream类的输入流,读取压缩文件的内容,首先通过getNextEntry()方法获得一个文件名ZipEntry,根据这个ZipEntry获得文件名,并且恢复原来的文件路径,新建文件后,再读取压缩文件的内容,解压后写入新建的文件中,完成一个文件的解压后,再通过getNextEntry()方法获得下一个ZipEntry,重复刚才的操作,直到输入流读到压缩文件的最后。这样解压就完成了。

2.3 类图

三、运行截图

四、总结

4.1 优点

本压缩和解压程序利用了图形界面,使得用户使用界面更加友好,加入图形化对话框之后,用户可以丢掉键盘完全只用鼠标点击就能完成对文件的压缩工作了,这样使用更加方便,更加人性化。

程序编写思路清晰,函数封装较好,可修改性强。

压缩和解压的速度中等,压缩效果与winzip差不多,整体评价性能中等,还有一定的使用价值。

4.2 不足

本程序在压缩中文文件名时,虽然能够正确的压缩和解压,但是使用系统安装的winzip软件打开时,中文文件名就会显示乱码,说明此程序不能完全跟winzip兼容,才使得在压缩中文文件名时出现乱码。

另外,本程序只能压缩一个文件或者文件夹,还没有实现对于多个文件或者多个文件夹的压缩,有一定的局限性。

此程序还有很多不足,所以还有很大的改进空间。

4.3 收获

通过编写文件压缩的程序,多次的使用文件输入输出流,提高了对文件和文件夹的创建,读写等操作水平。同时,还自学了java的图形界面的编程,熟悉了java文件对话框,button按钮以及文本输入框等的使用。

上传的附件 cloud_download 基于JAVA实现的文件压缩与解压缩.7z ( 46.09kb, 2次下载 )
error_outline 下载需要7点积分

发送私信

坚持了才叫梦想,放弃了就只是妄想

5
文章数
11
评论数
最近文章
eject