Tuesday, January 10, 2012

Zip Utility

package com.nmmc.dms.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipUtility {

    private static String strMainPath = "";

    public ZipUtility(String strPath) {
        strMainPath = strPath;
        strMainPath = strMainPath.replaceAll("\\\\", "/");
    }

    private static void addDirectory(ZipOutputStream zout, File fileSource) {
        File[] files = fileSource.listFiles();
        for (int i = 0; i < files.length; i++) {
            try {
                if (files[i].isDirectory()) {
                    addDirectory(zout, files[i]);
                    continue;
                }
                System.out.println("Adding file " + files[i].getName());
                String strAppendPath = files[i].getPath().replaceAll("\\\\", "/");
                strAppendPath = strAppendPath.split(strMainPath)[1];
                if (strAppendPath.charAt(0) == '/') {
                    strAppendPath = strAppendPath.replaceFirst("/", "");
                }
                byte[] buffer = new byte[1024];
                FileInputStream fin = new FileInputStream(files[i]);
                zout.putNextEntry(new ZipEntry(strAppendPath));
                int length;
                while ((length = fin.read(buffer)) > 0) {
                    zout.write(buffer, 0, length);
                }
                zout.closeEntry();
                fin.close();
            } catch (IOException ioe) {
                System.out.println("IOException :" + ioe);
            }
        }
    }

    public static boolean zipDirectory(String dir, String zipfile) throws IllegalArgumentException {

        try {
            dir.replaceAll("\\\\", "/");
            zipfile.replaceAll("\\\\", "/");
            FileOutputStream fout = new FileOutputStream(zipfile);
            ZipOutputStream zout = new ZipOutputStream(fout);
            File fileSource = new File(dir);
            addDirectory(zout, fileSource);
            zout.close();
            System.out.println("Zip file has been created!");
        } catch (IOException exception) {
            System.out.println("There is an IoException Occured :" + exception);
            exception.printStackTrace();
            return false;
        }
        return true;
    }
    public static void main(String args[]) {
        ZipUtility file = new ZipUtility("D:\\Jack Rabbit Integration");
        file.zipDirectory("D:\\Jack Rabbit Integration", "C:\\Jack Rabbit Integration-1.zip");    }
}