import net.lingala.zip4j.ZipFile; import net.lingala.zip4j.exception.ZipException; import net.lingala.zip4j.progress.ProgressMonitor; import net.lingala.zip4j.progress.ProgressMonitor.State; import net.lingala.zip4j.progress.ProgressMonitor.Result; import java.io.IOException; public class SampleClass{ public static void main(String[] args) throws IOException, InterruptedException{ ZipFile zip = new ZipFile("myzip.zip", "password".toCharArray()); zip.setRunInThread(true); ProgressMonitor pm = zip.getProgressMonitor(); zip.extractAll("extracted"); while(!pm.getState().equals (ProgressMonitor.State.READY)){ System.out.println("Percentage: " + pm.getPercentDone()); System.out.println("File: " + pm.getFileName()); System.out.println("Task: " + pm.getCurrentTask()); Thread.sleep(50); } if(pm.getResult(). equals(ProgressMonitor.Result.SUCCESS)) System.out.println("Success!"); else if(pm.getResult(). equals(ProgressMonitor.Result.ERROR)) System.err.println("Error: " + pm.getException().getMessage()); else if(pm.getResult(). equals(ProgressMonitor.Result.CANCELLED)) System.out.println("Operation Cancelled!"); } }