1. import net.lingala.zip4j.io.outputstream.ZipOutputStream;
  2. import net.lingala.zip4j.model.ZipParameters;
  3. import net.lingala.zip4j.model.enums.AesKeyStrength;
  4. import net.lingala.zip4j.model.enums.CompressionMethod;
  5. import net.lingala.zip4j.model.enums.EncryptionMethod;
  6. import java.io.FileOutputStream;
  7. import java.io.FileInputStream;
  8. import java.io.InputStream;
  9. import java.io.File;
  10. import java.io.IOException;
  11. import java.util.Arrays;
  12. import java.util.List;
  13. public class SampleClass{
  14. public static void main(String[] args)
  15. throws IOException{
  16. try(ZipOutputStream zos =
  17. new ZipOutputStream(
  18. new FileOutputStream(
  19. new File("myzip.zip")),
  20. "password".toCharArray())){
  21. ZipParameters zp =
  22. new ZipParameters();
  23. zp.setCompressionMethod
  24. (CompressionMethod.STORE);
  25. zp.setEncryptFiles(true);
  26. zp.setEncryptionMethod
  27. (EncryptionMethod.AES);
  28. zp.setAesKeyStrength
  29. (AesKeyStrength.KEY_STRENGTH_256);
  30. List<FilesToAdd> filesToAdd =
  31. Arrays.asList(
  32. new FilesToAdd
  33. (new File("folder/img1.jpg"), zp),
  34. new FilesToAdd
  35. (new File("folder/img2.jpg"), zp),
  36. new FilesToAdd
  37. (new File("folder/img3.jpg"), zp)
  38. );
  39. for(FilesToAdd fta : filesToAdd){
  40. //Entry size(bytes) must be set if we want to use
  41. //STORE to be used as compression method in
  42. //an entry.
  43. //
  44. //DEFLATE compression doesn't have this
  45. //requirement
  46. if(fta.getZipParameters().
  47. getCompressionMethod() == CompressionMethod.STORE)
  48. fta.getZipParameters().
  49. setEntrySize(fta.getFile().length());
  50. //This parameter must be set if we're sending
  51. //data to a zip file via stream
  52. fta.getZipParameters().setFileNameInZip
  53. (fta.getFile().getName());
  54. zos.putNextEntry(fta.getZipParameters());
  55. try(InputStream is =
  56. new FileInputStream(fta.getFile())){
  57. is.transferTo(zos);
  58. }
  59. zos.closeEntry();
  60. }
  61. }
  62. }
  63. }
  64. class FilesToAdd{
  65. private File file;
  66. private ZipParameters zp;
  67. FilesToAdd(File file, ZipParameters zp){
  68. this.file = file;
  69. this.zp = zp;
  70. }
  71. ZipParameters getZipParameters(){
  72. return zp;
  73. }
  74. File getFile(){
  75. return file;
  76. }
  77. }