在本文中,我们来学习如何用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
一行是可选的。我们可以从FASTEST
到ULTRA
级别中选择(默认是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);
创建一个分割的压缩文件
我们可以通过使用createSplitZipFile
和createSplitZipFileFromFolder
方法,``将压缩文件分割成几个文件。
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文章
2978浏览量
105324 -
Zip
+关注
关注
0文章
17浏览量
8666 -
磁盘
+关注
关注
1文章
381浏览量
25310 -
文件
+关注
关注
1文章
572浏览量
24861 -
加密
+关注
关注
0文章
305浏览量
24029
发布评论请先 登录
相关推荐
Protel在线教程:如何在PCB文件中加汉字
![Protel在线教程:如<b class='flag-5'>何在</b>PCB<b class='flag-5'>文件</b><b class='flag-5'>中加</b>汉字](https://file1.elecfans.com//web2/M00/A5/91/wKgZomUMOQiAP2ajAADtZfJYwjI545.jpg)
CC2541上微信的加密和解密
labview加密解密文件
ZigBee的加密和解密介绍
如何在Python中加密和解密数据
RT1020总线加密引擎是否加密和解密?
数据加密和解密,数据加密和解密原理是什么?
单片机的加密和解密
云存储下可追踪的外包解密属性加密方案
![云存储下可追踪的外包<b class='flag-5'>解密</b>属性<b class='flag-5'>加密</b>方案](https://file.elecfans.com/web1/M00/46/2B/o4YBAFqVB-qAbDJ-AABos11wCS0364.jpg)
详细解读Go加密解密算法
GPG加密和解密文件在Linux中使用
![GPG<b class='flag-5'>加密</b><b class='flag-5'>和解密</b><b class='flag-5'>文件</b>在Linux中使用](https://file1.elecfans.com//web2/M00/82/B5/wKgaomRd4POAKV-tAAH9ntWiEKQ481.jpg)
评论