衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在Java中加密和解密zip文件

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-10-08 11:48 ? 次閱讀

在本文中,我們來學習如何用Zip4j庫創建受密碼保護的壓縮文件并將其解壓。

依賴

讓我們先把 zip4j 依賴關系添加到我們的 pom.xml 文件中。

< dependency >
    < groupId >net.lingala.zip4j< /groupId >
    < artifactId >zip4j< /artifactId >
    < version >2.9.0< /version >
< /dependency >

壓縮一個文件

首先,我們將使用ZipFile addFile()方法將一個名為aFile.txt的文件壓縮到一個名為compressed.zip的有密碼保護的 zip 文件。

ZipParameters zipParameters = new ZipParameters();
zipParameters.setEncryptFiles(true);
zipParameters.setCompressionLevel(CompressionLevel.HIGHER);
zipParameters.setEncryptionMethod(EncryptionMethod.AES);

ZipFile zipFile = new ZipFile("compressed.zip", "password".toCharArray());
zipFile.addFile(new File("aFile.txt"), zipParameters);

setCompressionLevel一行是可選的。我們可以從FASTESTULTRA級別中選擇(默認是NORMAL)。

在這個例子中,我們使用了AES加密。如果我們想使用Zip標準加密,我們只需用ZIP_STANDARD替換AES

注意,如果文件 "aFile.txt "在磁盤上不存在,該方法將拋出一個異常。net.lingala.zip4j.exception.ZipException File does not exist: …

為了解決這個問題,我們必須確保該文件是手動創建并放置在項目文件夾中,或者我們必須從Java中創建它。

File fileToAdd = new File("aFile.txt");
if (!fileToAdd.exists()) {
    fileToAdd.createNewFile();
}

另外,在我們完成了新的ZipFile之后,需要及時關閉資源:

zipFile.close();

壓縮多個文件

讓我們修改一下代碼,以便我們能夠一次壓縮多個文件。

ZipParameters zipParameters = new ZipParameters();
zipParameters.setEncryptFiles(true);
zipParameters.setEncryptionMethod(EncryptionMethod.AES);

List< File > filesToAdd = Arrays.asList(
  new File("aFile.txt"),
  new File("bFile.txt")
);

ZipFile zipFile = new ZipFile("compressed.zip", "password".toCharArray());
zipFile.addFiles(filesToAdd, zipParameters);

我們不使用addFile方法,而是使用addFiles()并傳入一個List的文件。

壓縮一個目錄

我們可以簡單地用addFolder代替addFile方法來壓縮一個文件夾。

ZipFile zipFile = new ZipFile("compressed.zip", "password".toCharArray());
zipFile.addFolder(new File("/users/folder_to_add"), zipParameters);

創建一個分割的壓縮文件

我們可以通過使用createSplitZipFilecreateSplitZipFileFromFolder方法,``將壓縮文件分割成幾個文件。

ZipFile zipFile = new ZipFile("compressed.zip", "password".toCharArray());
int splitLength = 1024 * 1024 * 10; //10MB
zipFile.createSplitZipFile(Arrays.asList(new File("aFile.txt")), zipParameters, true, splitLength);
zipFile.createSplitZipFileFromFolder(new File("/users/folder_to_add"), zipParameters, true, splitLength);

splitLength的單位是字節。

提取所有文件

提取文件也同樣簡單。我們可以用extractAll()方法從我們的compressed.zip中提取所有文件。

ZipFile zipFile = new ZipFile("compressed.zip", "password".toCharArray());
zipFile.extractAll("/destination_directory");

提取單個文件

如果我們只想從compressed.zip中提取一個文件,我們可以使用extractFile()方法。

ZipFile zipFile = new ZipFile("compressed.zip", "password".toCharArray());
zipFile.extractFile("aFile.txt", "/destination_directory");

總結

綜上所述,我們已經學會了如何用Zip4j庫在Java中創建受密碼保護的壓縮文件并將其解壓。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2974

    瀏覽量

    105140
  • Zip
    Zip
    +關注

    關注

    0

    文章

    17

    瀏覽量

    8659
  • 磁盤
    +關注

    關注

    1

    文章

    380

    瀏覽量

    25276
  • 文件
    +關注

    關注

    1

    文章

    570

    瀏覽量

    24822
  • 加密
    +關注

    關注

    0

    文章

    305

    瀏覽量

    24006
收藏 人收藏

    評論

    相關推薦

    Protel在線教程:如何在PCB文件中加漢字

    Protel在線教程:如何在PCB文件中加漢字 在PCB文件上面加上漢字一直都是很多網友比較感興趣的事情。PROTEL早期的版本加
    發表于 04-22 09:09 ?4197次閱讀
    Protel在線教程:如<b class='flag-5'>何在</b>PCB<b class='flag-5'>文件</b><b class='flag-5'>中加</b>漢字

    CC2541上微信的加密和解密

    本帖最后由 冒汗的心情 于 2016-4-15 10:42 編輯 CC2541上微信的加密和解密CC2541連接微信有兩種,一個是精簡協議,一個是完整協議,精簡協議沒有身份驗證和加解密,而且
    發表于 04-13 11:39

    labview加密解密文件

    本帖最后由 wang060102122 于 2017-9-8 14:50 編輯 論壇有位網友分布的加密和解密文件夾小程序,其中加密可以正常使用,
    發表于 09-08 14:45

    ZigBee的加密和解密介紹

    Center(信任中心)的概念,本章內容主要講解的是TC的交換秘鑰過程。1. 非對稱加密算法。* 對稱加密算法在加密和解密時使用的是同一個秘鑰,而非對稱
    發表于 04-17 18:12

    何在Python中加密和解密數據

      加密是對信息進行編碼的過程,只有授權方才能訪問它。這一點至關重要,因為它可以安全地保護您不希望任何人看到或訪問的數據。在本文中,您將學習如何使用Python使用加密 庫對文件或任何字節對象,也
    發表于 08-07 17:45

    RT1020總線加密引擎是否加密和解密

    總線加密引擎是否加密和解密? 例如,如果我正在運行一個加密的 XIP 應用程序(來自串行或閃存),并且我希望它向閃存的不同區域寫入一些內容,會發生什么?是寫的時候
    發表于 05-10 06:10

    數據加密和解密,數據加密和解密原理是什么?

    數據加密和解密,數據加密和解密原理是什么? 隨著Internet 的普及,大量的數據、文件在Internet 傳送,因此在客觀上就需要一種
    發表于 03-19 13:46 ?7318次閱讀

    JAVA教程之用Zip壓縮多個文件

    JAVA教程之用Zip壓縮多個文件,很好的JAVA的資料,快來學習吧
    發表于 04-11 17:28 ?3次下載

    C語言教程之字符串加密和解密

    C語言教程之字符串加密和解密,很好的C語言資料,快來學習吧。
    發表于 04-25 15:49 ?0次下載

    Wannacry的逆向分析及加密文件解密

    Wannacry的逆向分析及加密文件解密
    發表于 09-07 09:59 ?10次下載
    Wannacry的逆向分析及<b class='flag-5'>加密</b><b class='flag-5'>文件</b>的<b class='flag-5'>解密</b>

    java實現非對稱加密算法的過程

    對稱式加密解密方式是加密方式的逆運算,即加密和解密使用的是同一個密鑰(初等加密算法)。非對稱式
    發表于 12-10 10:54 ?5466次閱讀
    <b class='flag-5'>java</b>實現非對稱<b class='flag-5'>加密</b>算法的過程

    單片機的加密和解密

    由于工作的關系經常會編寫單片機程序,也經常有客戶抱怨還沒有量產多久,程序就被破解了,于是不斷的研究加密和解密技術,經過5年來不斷的學習和同行的交流,目前的程序破解的可能性已經大大降低了,下面說下具體
    發表于 01-24 10:57 ?2次下載

    云存儲下可追蹤的外包解密屬性加密方案

    針對云存儲中密鑰追蹤問題,基于外包解密的屬性加密方案,提出一種新的屬性加密方案。通過在密鑰中加入密鑰因子,生成所有用戶的解密記錄表T,數據擁
    發表于 02-27 15:24 ?0次下載
    云存儲下可追蹤的外包<b class='flag-5'>解密</b>屬性<b class='flag-5'>加密</b>方案

    詳細解讀Go加密解密算法

    :對稱加密(也叫私鑰加密)指加密和解密使用相同密鑰的加密算法。具體算法主要有DES算法,3DES算法,TDEA算法,Blowfish算法,R
    的頭像 發表于 07-29 17:37 ?2527次閱讀

    GPG加密和解密文件在Linux中使用

    GPG(GNU Privacy Guard)是一種免費的開源加密軟件,用于保護計算機數據的機密性和完整性。 它使用非對稱加密算法,也稱為公鑰加密算法,其中數據被加密
    的頭像 發表于 05-12 14:47 ?2194次閱讀
    GPG<b class='flag-5'>加密</b><b class='flag-5'>和解密</b><b class='flag-5'>文件</b>在Linux中使用
    电投百家乐官网网站| 百家乐官网买闲打法| 海王星开户| 大发888娱乐城永乐厅| 百家乐板路| 星河百家乐现金网| 香港百家乐官网赌场娱乐网规则| 游戏厅百家乐官网软件| 澳门赌球网| 大发888娱乐城 qq服务| 百家乐公式书| 百家乐出千原理| 皇冠投注| 大发888是怎么吃钱不| 多伦多百家乐的玩法技巧和规则| 代理百家乐最多占成| 网上百家乐官网软件大全酷| 百家乐官网下注稳赢法| 西充县| E世博网址| 大发888登陆网页| 大发888娱乐城维护| 百家乐赌博筹| 机器百家乐心得| 壹贰博百家乐娱乐城| 百家乐有方式赢钱吗| 冠军百家乐现金网| 百家乐官网赌台| 棋牌百家乐官网有稳赚的方法吗 | 关于百家乐官网切入点| 百家乐官网固定打法| 茌平县| 澳门百家乐官网秘诀| 伊川县| 廊坊市| 泗水县| 泌阳县| 金沙百家乐官网现金网| 百家乐官网是骗人的| 百家乐官网怎样投注好| 真钱斗地主|