Zip Files (2.0)
Description: using ICSharpCode.SharpZipLib.Zip library
Link: http://www.codekeep.net/snippets/66104bb1-3798-4d1b-85bc-d4d47ca2a4ee.aspx
/************************************************************************************************
* *
* Zip Function *
* *
*************************************************************************************************/
//private bool WriteZipFolder(string strDirectoryPath, string strZipName)
//{
// bool blnIsGood = false;
// if (Directory.Exists(strDirectoryPath))
// {
// try
// {
// // Depending on the directory this could be very large and would require more attention
// // in a commercial package.
// string[] filenames = Directory.GetFiles(strDirectoryPath);
// // 'using' statements gaurantee the stream is closed properly which is a big source
// // of problems otherwise. Its exception safe as well which is great.
// using (ZipOutputStream s = new ZipOutputStream(File.Create(strDirectoryPath + "\\" + strZipName)))
// {
// s.SetLevel(9); // 0 - store only to 9 - means best compression
// byte[] buffer = new byte[4096];
// foreach (string file in filenames)
// {
// // Using GetFileName makes the result compatible with XP
// // as the resulting path is not absolute.
// ZipEntry entry = new ZipEntry(Path.GetFileName(file));
// // Setup the entry data as required.
// // Crc and size are handled by the library for seakable streams
// // so no need to do them here.
// // Could also use the last write time or similar for the file.
// entry.DateTime = DateTime.Now;
// s.PutNextEntry(entry);
// using (FileStream fs = File.OpenRead(file))
// {
// // Using a fixed size buffer here makes no noticeable difference for output
// // but keeps a lid on memory usage.
// int sourceBytes;
// do
// {
// sourceBytes = fs.Read(buffer, 0, buffer.Length);
// s.Write(buffer, 0, sourceBytes);
// } while (sourceBytes > 0);
// }
// }
// // Finish/Close arent needed strictly as the using statement does this automatically
// // Finish is important to ensure trailing information for a Zip file is appended. Without this
// // the created file would be invalid.
// s.Finish();
// // Close is important to wrap things up and unlock the file.
// s.Close();
// blnIsGood = true;
// }
// }
// catch (Exception e)
// {
// Utility.EmailError(HttpContext.Current, e, "ReverseX11Admin", "");
// }
// }
// return blnIsGood;
//}
private bool WriteZipFolder(string strDirectoryPath, string strZipName)
{
bool blnIsGood = false;
string strInnerDir = Path.GetFileName(strDirectoryPath);
strDirectoryPath = strDirectoryPath.Substring(0, strDirectoryPath.Length - strInnerDir.Length - 1);
if (Directory.Exists(strDirectoryPath))
{
try
{
FastZip fz = new FastZip();
fz.CreateZip(ConfigurationManager.AppSettings["ExportParentDir"] + strZipName, strDirectoryPath, true, "");
fz = null;
blnIsGood = true;
}
catch (Exception e)
{
Utility.EmailError(HttpContext.Current, e, "ReverseX11Admin", "");
}
}
return blnIsGood;
}





