0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

在本文中,我們來學(xué)習(xí)如何用Zip4j庫創(chuàng)建受密碼保護(hù)的壓縮文件并將其解壓。

依賴

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

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

壓縮一個(gè)文件

首先,我們將使用ZipFile addFile()方法將一個(gè)名為aFile.txt的文件壓縮到一個(gè)名為compressed.zip的有密碼保護(hù)的 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級(jí)別中選擇(默認(rèn)是NORMAL)。

在這個(gè)例子中,我們使用了AES加密。如果我們想使用Zip標(biāo)準(zhǔn)加密,我們只需用ZIP_STANDARD替換AES。

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

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

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

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

zipFile.close();

壓縮多個(gè)文件

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

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()并傳入一個(gè)List的文件。

壓縮一個(gè)目錄

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

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

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

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

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

提取單個(gè)文件

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

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

總結(jié)

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2967

    瀏覽量

    104758
  • Zip
    Zip
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    8643
  • 磁盤
    +關(guān)注

    關(guān)注

    1

    文章

    379

    瀏覽量

    25209
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    566

    瀏覽量

    24746
  • 加密
    +關(guān)注

    關(guān)注

    0

    文章

    304

    瀏覽量

    23922
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    Protel在線教程:如何在PCB文件中加漢字 在PCB文件上面加上漢字一直都是很多網(wǎng)友比較感興趣的事情。PROTEL早期的版本加
    發(fā)表于 04-22 09:09 ?4171次閱讀
    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連接微信有兩種,一個(gè)是精簡協(xié)議,一個(gè)是完整協(xié)議,精簡協(xié)議沒有身份驗(yàn)證和加解密,而且
    發(fā)表于 04-13 11:39

    labview加密解密文件

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

    ZigBee的加密和解密介紹

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

    何在Python中加密和解密數(shù)據(jù)

      加密是對(duì)信息進(jìn)行編碼的過程,只有授權(quán)方才能訪問它。這一點(diǎn)至關(guān)重要,因?yàn)樗梢园踩乇Wo(hù)您不希望任何人看到或訪問的數(shù)據(jù)。在本文中,您將學(xué)習(xí)如何使用Python使用加密 庫對(duì)文件或任何字節(jié)對(duì)象,也
    發(fā)表于 08-07 17:45

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

    總線加密引擎是否加密和解密? 例如,如果我正在運(yùn)行一個(gè)加密的 XIP 應(yīng)用程序(來自串行或閃存),并且我希望它向閃存的不同區(qū)域?qū)懭胍恍﹥?nèi)容,會(huì)發(fā)生什么?是寫的時(shí)候
    發(fā)表于 05-10 06:10

    數(shù)據(jù)加密和解密,數(shù)據(jù)加密和解密原理是什么?

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

    JAVA教程之用Zip壓縮多個(gè)文件

    JAVA教程之用Zip壓縮多個(gè)文件,很好的JAVA的資料,快來學(xué)習(xí)吧
    發(fā)表于 04-11 17:28 ?3次下載

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

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

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

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

    java實(shí)現(xiàn)非對(duì)稱加密算法的過程

    對(duì)稱式加密解密方式是加密方式的逆運(yùn)算,即加密和解密使用的是同一個(gè)密鑰(初等加密算法)。非對(duì)稱式
    發(fā)表于 12-10 10:54 ?5438次閱讀
    <b class='flag-5'>java</b>實(shí)現(xiàn)非對(duì)稱<b class='flag-5'>加密</b>算法的過程

    單片機(jī)的加密和解密

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

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

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

    詳細(xì)解讀Go加密解密算法

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

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

    GPG(GNU Privacy Guard)是一種免費(fèi)的開源加密軟件,用于保護(hù)計(jì)算機(jī)數(shù)據(jù)的機(jī)密性和完整性。 它使用非對(duì)稱加密算法,也稱為公鑰加密算法,其中數(shù)據(jù)被加密
    的頭像 發(fā)表于 05-12 14:47 ?2136次閱讀
    GPG<b class='flag-5'>加密</b><b class='flag-5'>和解密</b><b class='flag-5'>文件</b>在Linux中使用