Tuesday, January 10, 2012

UnZip Utility

package com.nmmc.dms.utils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

public class UnZipFile {

    private static void extractFile(InputStream inStream, OutputStream outStream) throws IOException {
        byte[] buf = new byte[1024];
        int l;
        while ((l = inStream.read(buf)) >= 0) {
            outStream.write(buf, 0, l);
        }
        inStream.close();
        outStream.close();
    }

    public static boolean extractZipFile(String strZipLocation, String folderPath) {
        try {
            strZipLocation.replaceAll("\\\\", "/");
            folderPath.replaceAll("\\\\", "/");
            ZipFile zip = new ZipFile(strZipLocation);
            Enumeration enumEntries = zip.entries();
            while (enumEntries.hasMoreElements()) {
                ZipEntry zipentry = (ZipEntry) enumEntries.nextElement();
                System.out.println("Name of Extract File : " + zipentry.getName());
                if (zipentry.isDirectory()) {
                    System.out.println("Name of Extract directory : " + zipentry.getName());
                    (new File(folderPath + "/" + zipentry.getName())).mkdirs();
                    continue;
                }
                else{
                    String result ="";
                    String[] splitString = zipentry.getName().split("/");
                   
                    for(int i=0;i<splitString.length-1;i++){
                        result=result+splitString[i]+"/";
                    }

                    //String result = zipentry.getName().substring(0, zipentry.getName().lastIndexOf('/', zipentry.getName().lastIndexOf('/') - 1));
                    File file=new File(folderPath + "/"+result);
                    boolean exists = file.exists();
                    if(!exists){
                        System.out.println("Name of Extract directory : " + result);
                        (new File(folderPath + "/"+result)).mkdirs();
                    }
                   
                extractFile(zip.getInputStream(zipentry), new FileOutputStream(folderPath + "/" + zipentry.getName()));
                }
            }
           
            zip.close();
        } catch (IOException ioe) {

            System.out.println("There is an IoException Occured :" + ioe);
            ioe.printStackTrace();
            return false;
        }
        return true;
    }

    public static void main(String args[]) {
        UnZipFile file = new UnZipFile();
        file.extractZipFile("C:\\Jack Rabbit Integration.zip", "D:");
    }
}