public static void ZipDirectory(string directoryName, string zipFileName)
{
System.IO.FileStream ZipFile=System.IO.File.Create(zipFileName);
zos = new ZipOutputStream(ZipFile);
addZipEntry(directoryName, String.Empty);
zos.Finish();
zos.Close();
} private static void addZipEntry(string PathStr, string zipPath)
{
System.IO.DirectoryInfo di= new System.IO.DirectoryInfo(PathStr);

string dirEntryName = zipPath + di.Name + "/";
ZipEntry dirEntry = new ZipEntry(dirEntryName);
zos.PutNextEntry(dirEntry); foreach(System.IO.DirectoryInfo item in di.GetDirectories())
{
addZipEntry(item.FullName, zipPath + di.Name + "\\");
}

foreach(System.IO.FileInfo item in di.GetFiles())
{
System.IO.FileStream fs = System.IO.File.OpenRead(item.FullName);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
string strEntryName=dirEntryName + item.Name; ZipEntry entry = new ZipEntry(strEntryName);
zos.PutNextEntry(entry);
zos.Write(buffer, 0, buffer.Length);
fs.Close();
}
}