Home » JAVA Learning » JAVA Core » Java IO » ZIP/UnZip
Category Archives: ZIP/UnZip
ZIP/UnZip files using Java
import java.io.File; import java.io.FileInputStream; 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; import java.util.zip.ZipOutputStream; public class ZipUtil { public static void zipDir(String dir2zip, ZipOutputStream zos) { try { File zipDir = new File(dir2zip); String[] dirList = zipDir.list(); byte[] readBuffer = new byte[2156]; int bytesIn = 0; for (int i = 0; i < dirList.length; i++) { File f = new File(zipDir, dirList[i]); if (f.isDirectory()) { String filePath = f.getPath(); zipDir(filePath, zos); continue; } FileInputStream fis = new FileInputStream(f); ZipEntry anEntry = new ZipEntry(f.getPath()); zos.putNextEntry(anEntry); while ((bytesIn = fis.read(readBuffer)) != -1) { zos.write(readBuffer, 0, bytesIn); } fis.close(); } } catch (Exception e) { } } public static void unZipDir(String source, String destDir) { try { // String sourceZipFile="E:\\curDir.zip"; // String destFolder="E:\\TEST\\"; String sourceZipFile = source; String destFolder = destDir; ZipFile zipFile = new ZipFile(sourceZipFile); Enumeration<?> enu = zipFile.entries(); while (enu.hasMoreElements()) { ZipEntry zipEntry = (ZipEntry) enu.nextElement(); String name = zipEntry.getName(); //System.out.println("NAME " + name); long size = zipEntry.getSize(); long compressedSize = zipEntry.getCompressedSize(); System.out.printf("name: %-20s | size: %6d | compressed size: %6d\n", name, size, compressedSize); File file = new File(destFolder + name.substring(3, name.length())); if (name.endsWith("/")) { file.mkdirs(); continue; } File parent = file.getParentFile(); if (parent != null) { parent.mkdirs(); } InputStream is = zipFile.getInputStream(zipEntry); FileOutputStream fos = new FileOutputStream(file); byte[] bytes = new byte[1024]; int length; while ((length = is.read(bytes)) >= 0) { fos.write(bytes, 0, length); } is.close(); fos.close(); } zipFile.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String ar[]) { try { //Zipping files //ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("E:\\curDir.zip")); //zipDir("D:\\CRRTAGS", zos); //zos.close(); //UnZipping files unZipDir("E:\\curDir.zip", "E:\\TEST\\"); } catch (Exception e) { e.printStackTrace(); } } }