最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2022年09月26日 08:32:02   作者:指北君  
在本文中,我們來學習如何用Zip4j庫創(chuàng)建受密碼保護的壓縮文件并將其解壓,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下

依賴

讓我們先把 zip4j 依賴關(guān)系添加到我們的 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: …

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

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

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

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);

創(chuàng)建一個分割的壓縮文件

我們可以通過使用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的單位是字節(jié)。

提取所有文件

提取文件也同樣簡單。我們可以用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");

總結(jié)

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

到此這篇關(guān)于詳解如何在Java中加密和解密zip文件的文章就介紹到這了,更多相關(guān)Java加密解密zip內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • K8S環(huán)境下如何驗證RocketMQ擴縮容

    K8S環(huán)境下如何驗證RocketMQ擴縮容

    文章主要內(nèi)容驗證了K8S環(huán)境下RocketMQ的擴縮容特性,包括序號變化、命名規(guī)則以及節(jié)點重建后序號保持不變,StatefulSet確保Pod序號在重建后保持穩(wěn)定,而Deployment創(chuàng)建的Pod名稱是隨機的
    2025-01-01
  • SpringBoot 注解事務聲明式事務的方式

    SpringBoot 注解事務聲明式事務的方式

    springboot使用上述注解的幾種方式開啟事物,可以達到和xml中聲明的同樣效果,但是卻告別了xml,使你的代碼遠離配置文件。今天就扒一扒springboot中事務使用注解的玩法,感興趣的朋友一起看看吧
    2017-09-09
  • Java關(guān)于含有繼承類的成員初始化過程講解

    Java關(guān)于含有繼承類的成員初始化過程講解

    今天小編就為大家分享一篇Java關(guān)于含有繼承類的成員初始化過程講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 基于jvm-sandbox的imock開發(fā)指南詳解

    基于jvm-sandbox的imock開發(fā)指南詳解

    這篇文章主要為大家介紹了基于jvm-sandbox的imock開發(fā)指南詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • SpringBoot對接小程序微信支付的實現(xiàn)

    SpringBoot對接小程序微信支付的實現(xiàn)

    本文主要介紹了SpringBoot對接小程序微信支付的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧<BR>
    2023-09-09
  • Spring Boot 2.4配置特定環(huán)境時spring: profiles提示被棄用的原因分析

    Spring Boot 2.4配置特定環(huán)境時spring: profiles提示被棄用的原

    這篇文章主要介紹了Spring Boot 2.4配置特定環(huán)境時spring: profiles提示被棄用的原因,本文給大家分享詳細解決方案,需要的朋友可以參考下
    2023-04-04
  • Java8實現(xiàn)任意參數(shù)的鏈棧

    Java8實現(xiàn)任意參數(shù)的鏈棧

    這篇文章主要為大家詳細介紹了Java8實現(xiàn)任意參數(shù)的鏈棧,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • SpringBoot基于數(shù)據(jù)庫實現(xiàn)定時任務過程解析

    SpringBoot基于數(shù)據(jù)庫實現(xiàn)定時任務過程解析

    這篇文章主要介紹了SpringBoot基于數(shù)據(jù)庫實現(xiàn)定時任務過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • JAVA線程池原理實例詳解

    JAVA線程池原理實例詳解

    這篇文章主要介紹了JAVA線程池原理,結(jié)合實例形式詳細分析了java線程池概念、原理、創(chuàng)建、使用方法及相關(guān)注意事項,需要的朋友可以參考下
    2019-03-03
  • 詳解Java的四種引用方式及其區(qū)別

    詳解Java的四種引用方式及其區(qū)別

    這篇文章主要介紹了Java的四種引用方式 ,主要主要包括強引用,軟引用,弱引用,虛引用,稍微整理精簡一下做下分享,具有一定的參考價值,需要的朋友可以參考下
    2018-12-12

最新評論

女性| 砚山县| 德兴市| 普陀区| 临安市| 基隆市| 萨嘎县| 剑阁县| 南江县| 辽宁省| 宜良县| 柳林县| 兴山县| 兰州市| 五莲县| 红河县| 扶沟县| 河北省| 洛浦县| 巴彦淖尔市| 娄烦县| 台州市| 青田县| 庄河市| 渭源县| 新竹县| 富民县| 曲阜市| 平武县| 荣成市| 林周县| 潢川县| 逊克县| 讷河市| 舟曲县| 青铜峡市| 铜川市| 永兴县| 阿坝县| 邢台市| 和静县|