首页 » Web前端 » phpzipaddfile技巧_若安在Java中加密和解密zip文件

phpzipaddfile技巧_若安在Java中加密和解密zip文件

访客 2024-12-05 0

扫一扫用手机浏览

文章目录 [+]

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

phpzipaddfile技巧_若安在Java中加密和解密zip文件

在这个例子中,我们利用了AES加密。
如果我们想利用Zip标准加密,我们只需用ZIP_STANDARD更换AES。

phpzipaddfile技巧_若安在Java中加密和解密zip文件
(图片来自网络侵删)

把稳,如果文件 "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; //10MBzipFile.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中创建受密码保护的压缩文件并将其解压。

相关文章