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的文件? ...
随机推荐
- Java框架spring 学习笔记(八):注入对象类型属性
使用set方法注入对象属性 编写UserDao.java文件 package com.example.spring; public class UserDao { public void print( ...
- WPF网格绑定控件并控制控件是否可读
<DataGridTemplateColumn Width="100" Header="实测值"> <DataGridTemplateColu ...
- python的可变对象与不可变对象
a = 1print(id(a))def fun(a): a = 2 print(a,id(a))fun(a)print(a,id(a)) # 1#为什么这里的a的值没有改变#因为在函数里变量赋值(内 ...
- 移动端rem适配
(function(_D) { var _self = {}; _self.resizeEvt = 'orientationchange' in window ? 'orientationchange ...
- mysql学习笔记--数据库视图
一.视图 1. 概念 a. 视图是一张虚拟表,它表示一张表的部分或多张表的综合的结构 b. 视图仅仅是表结构,没有数据.视图的结构和数据建立在表的基础上 2. 创建视图 a. 语法: create [ ...
- 2018-2019-2 20175126谢文航 实验二《Java面向对象程序设计》实验报告
一.实验报告封面 课程:Java程序设计 班级:1751 班 姓名:谢文航 学号:20175126 指导教师:娄嘉鹏 实验日期:2019年4月17日 实验时间:--- 实验序号:实验二 实验名称:Ja ...
- redis缓存与数据库一致性问题
一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去. ...
- FPGA做正则匹配和网络安全,究竟有多大的优势?
FPGA做正则匹配和网络安全,究竟有多大的优势? 西电通院专用集成电路课程学习 云导播 网络安全已经被提升为国家战略的高度,高校里面的新增的一级学科,去年9月份,中央网信办.教育部公布了“一流网络安全 ...
- VB 性能优化点
1.将Single,Double和Currency类型的变量替换为Integer或Long类型的变量:10倍 2.避免使用变体: 慢:Dim FSO as object Set FSO = N ...
- NC 刷新后,停留上一次选择的行(多行)
如图,我点击批量输入后,会调用列表刷新按钮.但数据之前选择的光标会跳到第一行,原先选择的行就不知道是哪行可.图为最终效果 // 批量输入日期后实时刷新 apply update(batch input ...