ControlC ControlC · Pastebin

java-zip4j-tut-working-with-zipinput-zipoutput-1

Pasted: Apr 22, 2024, 7:48:29 am · Views: 148
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;
}

}