- import net.lingala.zip4j.io.outputstream.ZipOutputStream;
- import net.lingala.zip4j.model.ZipParameters;
- import net.lingala.zip4j.model.enums.AesKeyStrength;
- import net.lingala.zip4j.model.enums.CompressionMethod;
- import net.lingala.zip4j.model.enums.EncryptionMethod;
-
- import java.io.FileOutputStream;
- import java.io.FileInputStream;
- import java.io.InputStream;
- import java.io.File;
- import java.io.IOException;
- import java.util.Arrays;
- import java.util.List;
-
- public class SampleClass{
-
- public static void main(String[] args)
- throws IOException{
-
- try(ZipOutputStream zos =
- new ZipOutputStream(
- new FileOutputStream(
- new File("myzip.zip")),
- "password".toCharArray())){
-
- ZipParameters zp =
- new ZipParameters();
- zp.setCompressionMethod
- (CompressionMethod.STORE);
- zp.setEncryptFiles(true);
- zp.setEncryptionMethod
- (EncryptionMethod.AES);
- zp.setAesKeyStrength
- (AesKeyStrength.KEY_STRENGTH_256);
-
- List<FilesToAdd> filesToAdd =
- Arrays.asList(
- new FilesToAdd
- (new File("folder/img1.jpg"), zp),
- new FilesToAdd
- (new File("folder/img2.jpg"), zp),
- new FilesToAdd
- (new File("folder/img3.jpg"), zp)
- );
-
- for(FilesToAdd fta : filesToAdd){
-
- //Entry size(bytes) must be set if we want to use
- //STORE to be used as compression method in
- //an entry.
- //
- //DEFLATE compression doesn't have this
- //requirement
- if(fta.getZipParameters().
- getCompressionMethod() == CompressionMethod.STORE)
- fta.getZipParameters().
- setEntrySize(fta.getFile().length());
-
- //This parameter must be set if we're sending
- //data to a zip file via stream
- fta.getZipParameters().setFileNameInZip
- (fta.getFile().getName());
- zos.putNextEntry(fta.getZipParameters());
-
- try(InputStream is =
- new FileInputStream(fta.getFile())){
- is.transferTo(zos);
- }
-
- zos.closeEntry();
- }
- }
- }
- }
-
- class FilesToAdd{
- private File file;
- private ZipParameters zp;
-
- FilesToAdd(File file, ZipParameters zp){
- this.file = file;
- this.zp = zp;
- }
-
- ZipParameters getZipParameters(){
- return zp;
- }
-
- File getFile(){
- return file;
- }
-
- }