Java实现zip压缩文件的解压
需求描述:
前段时间写了一篇博客《Java实现对文本文件MD5加密并ftp传送到远程主机目录》,实现了一部分的业务需求。然而有些业务可能不止传送一个文件,有时候客户需要传多个文件,原有系统并不支持,因此现在需要在这个的基础上新开发一个功能,要求可以实现该业务场景,传送多个文件到远程主机指定的目录上。
业务梳理:
对于此需求,我有两个想法,想法一是通过点击文件上传按钮的选择文件的时候,设置让用户选择多个文件,Java端对于文件的对象的信息设置成数组,但是这个方法,我尝试设置Struts的<s:file ></s:file>标签属性multiple="multiple",也并没有实现想要达到的效果,查阅全网多篇博客无果不得不放弃想法一。
想法二是用户把需要上传的文本文件上传,打成一个zip包,Java获取到该文件之后,对其进行解压,然后遍历该目录下的文件,对每一个文件进行MD5加密,生成同名的MD5文件,然后获取需要传送到的主机的IP、账户、密码、以及上传的目录信息。
其大致的流程图如下图所示:

程序实现:
一、前台界面
由于是新增的业务场景,所以前台界面也需要修改,提供下拉选项给业务人员选择。

需要对业务人员上传的文件类型做下限制,写在JS的函数里面

实现的前台界面如图所示:

二、文件对象的操作
用户上传文件后,系统通过Struts2获取到文件对象,复制到datapath随机生成的子目录下

这里开始对文件类型进行判断,如果是后缀为zip的文件类型,调用ZipUtil.unzip(newFile, datapath)方法对文件对象进行解压,解压之后,遍历该目录下的文件,如果后缀为".000",则进行md5加密,生成同名MD5文件,这个动作是通过调用filemd5.getMD5(fortmp)方法来完成的。最后是操作完之后,为避免把zip文件也上传,所以这里通过newFile.delete()把文件删掉。

解压的方法ZipUtil.unzip,这里用到ant.jar,需要导入一下,或者添加maven的pom依赖,这里只写了一个zip的解压方法,并没有写到其它格式如rar的解压。

MD5的加密算法以及生成MD5文件,可以参考上一篇博客,Java实现对文本文件MD5加密并ftp传送到远程主机目录,这里不再描述,或者参考下网上博客。
三、获取主机的IP、账户、密码、目录信息以及实现上传
这些操作在上一篇博客都有提及,这里就只发一张图片吧

前台界面的OperationType对应数据库配置表中的AUDIT_FLAG,通过Java调用Ibaits下面图片的sql就可以获取到相关的信息了

实现把当前文件夹的文件上传在上一篇博客也有提及,这里我就只贴一张图

最后是反馈结果

总结:
本篇博客在上一篇博客的基础上实现对zip上传文件的解压,对解压后的文件进行MD5加密生成同名MD5文件,然后实现ftp上传到远程主机上。其中业务流程如下图所示

如果你有需要你可以到https://github.com/rootzhongfengshan/the-repository-of-zhongfengshan.git中的Java_project目录下获取zip的源码。
Java实现zip压缩文件的解压的更多相关文章
- PHP zip压缩文件及解压
PHP zip压缩文件及解压 利用ZipArchive 类实现 只有有函数.界面大家自己写 ZipArchive(PHP 5.3 + 已自带不需要安装dll) /** * 文件解压 * @param ...
- Android 下载zip压缩文件并解压
网上有很多介绍下载文件或者解压zip文件的文章,但是两者结合的不多,在此记录一下下载zip文件并直接解压的方法. 其实也很简单,就是把下载文件和解压zip文件结合到一起.下面即代码: URLConne ...
- SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html
SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html 说明: 1.环境:SpringMVC+Spring+Tomcat7+JDK1.7 2.支持 zip和rar格式的压 ...
- pclzip 压缩文件与解压
类PclZip.class.php下载:PclZip.rar<?php header("Content-type: text/html; charset=utf-8"); f ...
- Unity3D研究院之LZMA压缩文件与解压文件
原地址:http://www.xuanyusong.com/archives/3095 前两天有朋友告诉我Unity的Assetbundle是LZMA压缩的,刚好今天有时间那么就研究研究LZMA.它是 ...
- Android下载压缩文件与解压案例
ackage com.example.jsontest.biz; import java.io.BufferedInputStream; import java.io.BufferedOutputSt ...
- java生成zip压缩文件,解压缩文件
1.生成zip public static void main(String[] args) { try { // testZip("c:\\temp.txt", "c: ...
- 【VC++技术杂谈008】使用zlib解压zip压缩文件
最近因为项目的需要,要对zip压缩文件进行批量解压.在网上查阅了相关的资料后,最终使用zlib开源库实现了该功能.本文将对zlib开源库进行简单介绍,并给出一个使用zlib开源库对zip压缩文件进行解 ...
- Linux下*.tar.bz2等文件如何解压--转
如果tar不支持j这个参数就先用 bzip2 -d xxx.tar.bz2 把它解压成.tar文件,然后再用 tar xvf xxx.tar 拆包.压缩解压 linux下怎么解后缀名是gzip的文件? ...
随机推荐
- List接口特有功能
List 有序的 有整数索引 允许重复使用 特有功能: void add(int index, E element) //指定位置添加元素 E get()int index) ...
- 【练习】Python第一,二次
练习一 1,执行Python脚本的两种方式 a,Python解释器 b,Python 1.py 2,简述位和字节的关系 一个字节等于8位 3,简述ascii,unicode,utf-8,gbk的关系 ...
- Java Web解决跨域请求
要知道跨域请求就要先了解同源策略,那么什么是同源?什么是不同源?简单来说就是,如果两个资源,包括HTML页面.JavaScript脚本.css样式,对应的协议.域名和端口完全相同,那么这两个资源就是同 ...
- 百度ueditor的图片上传,前后端交互使用
百度ueditor的使用 一个文本编辑器,看了网上很多文档写的很乱,这里拾人牙慧,整理下怎么使用. 这个东西如果不涉及到图片附件上传,其实很简单,就是几个前端文件,直接引用,然后配置下ueditor. ...
- python3 报错
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: ...
- PRD是什么
产品需求文档(Product Requirement Document,PRD)的英文简称.是将商业需求文档(BRD)和市场需求文档(MRD)用更加专业的语言进行描述
- pytho命名规范
1变量小写 多个单词 下划线 2 常量 全大写 3
- formValidator 插件 使用总结
1. 大小写的问题, formvalidator 的属性 大小写问题一定要注意, 在踩过的坑里就包括这个, 把所有属性的第二个字母的开头全部写成大写 ,导致提示信息不能用,这个问题纠结了好久 2.er ...
- .NET Core PartialView 与 Ajax
Ajax的核心是XMLHttpRequest对象(XHR),能够以异步方式从服务器获取新数据.开发主要利用Ajax来执行异步刷新和局部视图更新的功能. 而开发常常在前段页面利用JQuery封装的Aja ...
- Win10系统,开机后提示Desktp不可用的故障解决方法。
WIN10桌面位置不可用的故障解决方法 今天电脑开机 (Win10系统).桌面空了,然后就蒙了. 系统并弹出以下框,如下图: 原因可能是因为昨天晚上熬夜测试脚本.网上下载的脚本大多都是有毒的.但是人懒 ...