import java.io.File;
import java.util.zip.ZipOutputStream;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.Enumeration;
import java.io.BufferedOutputStream;
import java.io.BufferedInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.zip.ZipException;
public class Zipper
{
public void zip(String srcFolder,String destZipFile) throws FileNotFoundException,Exception
{
File fpfname = null;
byte[] buf = null;
int len = 0;
FileInputStream fis = null;
File folder = null;
String fileList[] = null;
int i = 0;
ZipOutputStream zipOS = null;
FileOutputStream fileWriter = null;
try
{
fileWriter = new FileOutputStream(destZipFile);
zipOS = new ZipOutputStream(fileWriter);
folder = new File(srcFolder);
if(folder.exists())
{
if(folder.isDirectory())
{
fileList = new String[folder.list().length];
fileList = folder.list();
while(i < fileList.length)
{
fpfname = new File(srcFolder+File.separator+fileList[i]);
if(fpfname.exists())
{
if(fpfname.isFile())
{
buf = new byte[1000];
fis = new FileInputStream(fpfname);
zipOS.putNextEntry(new ZipEntry(folder.getName()+File.separator+fpfname.getName()));
while((len = fis.read(buf)) > 0)
{
zipOS.write(buf,0,len);
}
}
}
i++;
}
}
}
}
catch(Exception e)
{
e.printStackTrace();//System.exit(0);
}
finally
{
try{if(zipOS != null){zipOS.flush();zipOS.close();}}catch(Exception ex){}finally{zipOS = null;}
try{if(fileWriter != null){fileWriter.flush();fileWriter.close();}}catch(Exception e){}finally{fileWriter = null;}
try{if(fis != null){fis.close();}}catch(Exception e){}finally{fis = null;}
fpfname = null;
buf = null;
len = 0;
folder = null;
fileList = null;
i = 0;
srcFolder = null;
destZipFile = null;
}
}
public void unzip(String zipfile,String destination) throws ZipException,IOException,Exception
{
String dr = null;
File destDir = null;
File archive = null;
ZipFile zipFile = null;
Enumeration entries = null;
byte[] buffer = null;
int len = 0;
ZipEntry entry = null;
String entryFileName = null;
File dir = null;
BufferedOutputStream bos = null;
BufferedInputStream bis = null;
try
{
dr = zipfile.substring(0,zipfile.toLowerCase().indexOf(“.zip”));
if(destination == null){destination = dr;}
destDir = new File(destination);
archive = new File(zipfile);
if(archive.exists())
{
if(archive.isFile())
{
if(!destDir.exists()){destDir.mkdir();}
if(destDir.exists())
{
if(destDir.isDirectory())
{
zipFile = new ZipFile(archive);
entries = zipFile.entries();
buffer = new byte[1000];
while(entries.hasMoreElements())
{
entry = (ZipEntry) entries.nextElement();
entryFileName = entry.getName();
dir = buildDirectoryHierarchyFor(entryFileName,destDir);
if(!dir.exists()){dir.mkdirs();}
if(dir.exists())
{
if(dir.isDirectory())
{
if(!entry.isDirectory())
{
bos = new BufferedOutputStream(new FileOutputStream(new File(destDir,entryFileName)));
bis = new BufferedInputStream(zipFile.getInputStream(entry));
while((len = bis.read(buffer)) > 0)
{
bos.write(buffer,0,len);
}
try{if(bos != null){bos.flush();bos.close();}}catch(Exception e){}finally{bos = null;}
try{if(bis != null){bis.close();}}catch(Exception e){}finally{bis = null;}
}
}
}
}
}
}
}
}
}catch(Exception e){e.printStackTrace();}
finally
{
try{if(bos != null){bos.flush();bos.close();}}catch(Exception e){}finally{bos = null;}
try{if(bis != null){bis.close();}}catch(Exception e){}finally{bis = null;}
dr = null;
destDir = null;
archive = null;
zipFile = null;
entries = null;
buffer = null;
len = 0;
entry = null;
entryFileName = null;
dir = null;
zipfile = null;
destination = null;
}
}
private File buildDirectoryHierarchyFor(String entryName,File destDir)
{
int lastIndex = 0;
String internalPathToEntry = null;
File fbdhf = null;
try
{
lastIndex = entryName.lastIndexOf(File.separator);
internalPathToEntry = entryName.substring(0, lastIndex + 1);
fbdhf = new File(destDir,internalPathToEntry);
}catch(Exception e){fbdhf = null;e.printStackTrace();}
finally
{
lastIndex = 0;
internalPathToEntry = null;
entryName = null;
destDir = null;
return fbdhf;
}
}
public static void main(String []argv){
try{
Zipper zipper = new Zipper();
zipper.zip(“FaxLibrary”,”fs.zip”);
}catch(Exception e){
}
}
}