原文: https://howtodoinjava.com/java/io/how-to-create-password-protected-zip-files-in-java/

本教程介绍使用非常有用的库 Zip4j 创建受密码保护的 zip 文件。 Java 默认情况下不提供文件密码保护的任何支持。 尽管它对创建/提取 zip 文件具有很好的 API 支持。 还有一些其他有用的库,它们同样好,有时甚至比 zip4j 更好,但是它们也使用一些本机代码,这使得它们的使用平台在某种程度上依赖于。 Zip4j 完全使用 Java 代码,没有任何本机代码的支持,因此它更适合我。

Zip4j 提供以下特性:

  • 创建,添加,提取,更新,从 Zip 文件中删除文件
  • 读/写受密码保护的 Zip 文件
  • 支持 AES 128/256 加密
  • 支持标准 Zip 加密
  • 支持 Zip64 格式
  • 支持存储(无压缩)和压缩压缩方法
  • 从分卷 Zip 文件创建或提取文件(例如:z01,z02,…zip)
  • 支持 Unicode 文件名
  • 进度监视器

1)下载 Zip4j 库并将其包含到项目中

要下载 Zip4j 库,请转到其 zip4j 下载页面并下载其最新版本(直到今天的zip4j_1.3.2.jar)。

zip4j.jar文件添加到您项目的类路径中。

2)创建受密码保护的 zip 文件的示例

现在,您可以使用以下代码创建受密码保护的存档。

您将需要使用 Java 6 来运行示例。

  1. import java.io.File;
  2. import java.util.ArrayList;
  3. import net.lingala.zip4j.core.ZipFile;
  4. import net.lingala.zip4j.exception.ZipException;
  5. import net.lingala.zip4j.model.ZipParameters;
  6. import net.lingala.zip4j.util.Zip4jConstants;
  7. public class CreatePasswordProtectedZipExample
  8. {
  9. public static void main(String[] args)
  10. {
  11. try {
  12. //This is name and path of zip file to be created
  13. ZipFile zipFile = new ZipFile("C:/temp/test.zip");
  14. //Add files to be archived into zip file
  15. ArrayList<File> filesToAdd = new ArrayList<File>();
  16. filesToAdd.add(new File("C:/temp/test1.txt"));
  17. filesToAdd.add(new File("C:/temp/test2.txt"));
  18. //Initiate Zip Parameters which define various properties
  19. ZipParameters parameters = new ZipParameters();
  20. parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // set compression method to deflate compression
  21. //DEFLATE_LEVEL_FASTEST - Lowest compression level but higher speed of compression
  22. //DEFLATE_LEVEL_FAST - Low compression level but higher speed of compression
  23. //DEFLATE_LEVEL_NORMAL - Optimal balance between compression level/speed
  24. //DEFLATE_LEVEL_MAXIMUM - High compression level with a compromise of speed
  25. //DEFLATE_LEVEL_ULTRA - Highest compression level but low speed
  26. parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
  27. //Set the encryption flag to true
  28. parameters.setEncryptFiles(true);
  29. //Set the encryption method to AES Zip Encryption
  30. parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
  31. //AES_STRENGTH_128 - For both encryption and decryption
  32. //AES_STRENGTH_192 - For decryption only
  33. //AES_STRENGTH_256 - For both encryption and decryption
  34. //Key strength 192 cannot be used for encryption. But if a zip file already has a
  35. //file encrypted with key strength of 192, then Zip4j can decrypt this file
  36. parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
  37. //Set password
  38. parameters.setPassword("howtodoinjava");
  39. //Now add files to the zip file
  40. zipFile.addFiles(filesToAdd, parameters);
  41. }
  42. catch (ZipException e)
  43. {
  44. e.printStackTrace();
  45. }
  46. }
  47. }

还有其他有用的用例,您也可以查看其源码发行版zip4j_examples_eclipse_1.3.2.zip。 签出这个非常有用的库。

祝您学习愉快!

参考: http://www.lingala.net/zip4j/