This post explains how to unzip a zip file.
package ZipDemo;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class ZipDemo3 {
public static void main(String[] args) throws FileNotFoundException, IOException {
String destination = "E:\\Projects\\JavaProjects\\JavaConcepts\\WorkFolder\\Folder1";
try (ZipFile zipFile = new ZipFile("E:\\Projects\\JavaProjects\\JavaConcepts\\WorkFolder\\Folder1.zip")){
File folder = new File(destination);
folder.mkdir();
Enumeration entries = zipFile.entries();
for (Enumeration<? extends ZipEntry> e = entries; e.hasMoreElements();) {
ZipEntry zipEntry = e.nextElement();
System.out.println(zipEntry.getName());
if(zipEntry.isDirectory()) {
File childFolder = new File(folder, zipEntry.getName());
childFolder.mkdir();
} else {
try(FileOutputStream fos = new FileOutputStream(folder.getAbsolutePath() + "\\" + zipEntry.getName())) {
InputStream zis = zipFile.getInputStream(zipEntry);
byte[] data = new byte[1024];
int bytesRead = zis.read(data);
while(bytesRead != -1) {
fos.write(data,0,bytesRead);
bytesRead = zis.read(data);
}
fos.flush();
fos.close();
}
}
}
}
}
}
Explanation
An instance of ZipFile represents the zip file to be unzip. An instance of ZipEntry represents each entry (which can be a folder or file) in the zip file which has to be extracted. We can check whether an entry represents a directory or not using the isDirectory method in ZipEntry class. In the above code if block creates a directory in the destination folder and else block extracts the file.