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的源碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM