protected void btnZip_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
string ZipFileName = String.Format(@"C:\ZippedFolders\({0}).MyZip.zip",
DateTime.Now.ToString("yyyyMMdd"));
string theDirectory = @"C:\FolderToZip";
try
{
sb.Append(String.Format("Directory To Zip: {0}.<br />", theDirectory));
sb.Append(String.Format("Zip file: {0}.<br />", ZipFileName));
string[] allFiles = Directory.GetFiles(theDirectory, "*.*",
SearchOption.AllDirectories);
if (System.IO.File.Exists(ZipFileName))
{
System.IO.File.Delete(ZipFileName);
sb.Append(String.Format
("Deleted old Zip file: {0}.<br />", ZipFileName));
}
FileOutputStream fos = new FileOutputStream(ZipFileName);
ZipOutputStream zos = new ZipOutputStream(fos);
zos.setLevel(9);
for (int i = 0; i < allFiles.Length; i++ )
{
string sourceFile = allFiles[i];
FileInputStream fis = new FileInputStream(sourceFile);
ZipEntry ze = new ZipEntry(sourceFile.Replace(theDirectory + @"\", ""));
zos.putNextEntry(ze);
sbyte[] buffer = new sbyte[1024];
int len;
while ((len = fis.read(buffer)) >= 0)
{
zos.write(buffer, 0, len);
}
fis.close();
}
zos.closeEntry();
zos.close();
fos.close();
sb.Append(String.Format("Folder {0} Zipped successfully to File {1}.<br />",
theDirectory, ZipFileName));
}
catch (Exception eX)
{
sb.Append(String.Format("Error zipping folder {0}. Details: {1}.
Stack Trace: {2}.<br />", theDirectory, eX.Message, eX.StackTrace));
}
lbReport.Text = sb.ToString();
}
Edit: added "pre" tags