{"id":108,"date":"2007-10-25T10:06:00","date_gmt":"2007-10-25T10:06:00","guid":{"rendered":"https:\/\/wdev-blog.azurewebsites.net\/index.php\/2007\/10\/25\/zip-a-folder-using-sharpziplib-assembly-in-c\/"},"modified":"2007-10-25T10:06:00","modified_gmt":"2007-10-25T10:06:00","slug":"zip-a-folder-using-sharpziplib-assembly-in-c","status":"publish","type":"post","link":"http:\/\/panahy.nl\/index.php\/2007\/10\/25\/zip-a-folder-using-sharpziplib-assembly-in-c\/","title":{"rendered":"Zip a folder using SharpZipLib assembly in C#"},"content":{"rendered":"<div>\n<p><span style=\"font-family:'Arial','sans-serif';color:black;\">There are several ways of zipping files. One way I started was to copy the files in the folder into an already existing zip file using a vb script. This was going fine until we had the request to delete the files when the process is done. Unfortunately the zip process thought it was completed and so the delete could start which caused the files be removed before taking the chance to be zipped.<?xml:namespace prefix = o \/><o:p><\/o:p><\/span><\/p>\n<p><span style=\"font-family:'Arial','sans-serif';color:black;\"><o:p><\/o:p><\/span><span style=\"font-family:'Arial','sans-serif';color:black;\">My second attempt is this small c# script that is runnable in both frameworks 1.1 and 2.0. It uses a free open software called <b>ZipLib<\/b> that I have downloaded it from their <a href=\"http:\/\/www.icsharpcode.net\/OpenSource\/SharpZipLib\/\">website<\/a>. <o:p><\/o:p><\/span><\/p>\n<p><span style=\"font-family:'Arial','sans-serif';color:black;\"><o:p><\/o:p><\/span><span style=\"font-family:'Arial','sans-serif';color:black;\">In this library they have several ways of doing the same thing. Adding files one by one was my preferred option for this particular problem but I had an issue with Windows XP not willing to show the content of the zip file whislt the file is unzippable. So I had to come up with this fast solution. <o:p><\/o:p><\/span><\/p>\n<p><span style=\"font-family:'Arial','sans-serif';color:black;\">This small program is using a fast class for doing regular things like I wanted.<o:p><\/o:p><\/span><\/p>\n<p><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:blue;\">using<\/span><span style=\"font-family:Consolas;color:black;\"> System;<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:blue;\">using<\/span><span style=\"font-family:Consolas;color:black;\"> System.IO;<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:blue;\">using<\/span><span style=\"font-family:Consolas;color:black;\"> ICSharpCode.SharpZipLib.Zip;<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:blue;\">using<\/span><span style=\"font-family:Consolas;color:black;\"> ICSharpCode.SharpZipLib.Checksums;<\/span><\/span><span style=\"font-family:Consolas;font-size:85%;color:black;\"><o:p> <\/o:p><\/span><\/p>\n<p><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:blue;\">namespace<\/span><span style=\"font-family:Consolas;color:black;\"> ZipFolder<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\">{<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\"><\/span><span style=\"font-family:Consolas;color:gray;\">\/\/\/<\/span><span style=\"font-family:Consolas;color:green;\"> <\/span><span style=\"font-family:Consolas;color:gray;\">&lt;summary&gt;<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:green;\"><\/span><span style=\"font-family:Consolas;color:gray;\">\/\/\/<\/span><span style=\"font-family:Consolas;color:green;\"> This small program is a command line application that takes two parameters.<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:green;\"><\/span><span style=\"font-family:Consolas;color:gray;\">\/\/\/<\/span><span style=\"font-family:Consolas;color:green;\"> If you don&#8217;t provide any parameter it will then show the syntax.<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:green;\"><\/span><span style=\"font-family:Consolas;color:gray;\">\/\/\/<\/span><span style=\"font-family:Consolas;color:green;\"> The aim of this class is to zip a folder with all its contents into a small zip file.<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:green;\"><\/span><span style=\"font-family:Consolas;color:gray;\">\/\/\/<\/span><span style=\"font-family:Consolas;color:green;\"> Notice that you can call it to zip the current folder but the destination may not be<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:green;\"><\/span><span style=\"font-family:Consolas;color:gray;\">\/\/\/<\/span><span style=\"font-family:Consolas;color:green;\"> within the source folder.<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:green;\"><\/span><span style=\"font-family:Consolas;color:gray;\">\/\/\/<\/span><span style=\"font-family:Consolas;color:green;\"><br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:green;\"><\/span><span style=\"font-family:Consolas;color:gray;\">\/\/\/<\/span><span style=\"font-family:Consolas;color:green;\"> By Asghar Panahy<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:green;\"><\/span><span style=\"font-family:Consolas;color:gray;\">\/\/\/<\/span><span style=\"font-family:Consolas;color:green;\"> 25-oct-2007<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:green;\"><\/span><span style=\"font-family:Consolas;color:gray;\">\/\/\/<\/span><span style=\"font-family:Consolas;color:green;\"><br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:green;\"><\/span><span style=\"font-family:Consolas;color:gray;\">\/\/\/<\/span><span style=\"font-family:Consolas;color:green;\"> <\/span><span style=\"font-family:Consolas;color:gray;\">&lt;\/summary&gt;<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\"><\/span><span style=\"font-family:Consolas;color:blue;\">class<\/span><span style=\"font-family:Consolas;color:black;\"> Program<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\">{<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\"><\/span><span style=\"font-family:Consolas;color:gray;\">\/\/\/<\/span><span style=\"font-family:Consolas;color:green;\"> <\/span><span style=\"font-family:Consolas;color:gray;\">&lt;summary&gt;<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:green;\"><\/span><span style=\"font-family:Consolas;color:gray;\">\/\/\/<\/span><span style=\"font-family:Consolas;color:green;\"> Expects exactly zero or two parameters<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:green;\"><\/span><span style=\"font-family:Consolas;color:gray;\">\/\/\/<\/span><span style=\"font-family:Consolas;color:green;\"> <\/span><span style=\"font-family:Consolas;color:gray;\">&lt;\/summary&gt;<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\">[STAThread]<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\"><\/span><span style=\"font-family:Consolas;color:blue;\">static<\/span><span style=\"font-family:Consolas;color:black;\"> <\/span><span style=\"font-family:Consolas;color:blue;\">void<\/span><span style=\"font-family:Consolas;color:black;\"> Main(<\/span><span style=\"font-family:Consolas;color:blue;\">string<\/span><span style=\"font-family:Consolas;color:black;\">[] args)<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\">{<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\"><\/span><span style=\"font-family:Consolas;color:blue;\">if<\/span><span style=\"font-family:Consolas;color:black;\"> (args.Length &lt;<\/span><span style=\"font-family:Consolas;color:red;\">2<\/span><span style=\"font-family:Consolas;color:black;\">)<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\">{<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\">DumpSyntaxt();<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\"><\/span><span style=\"font-family:Consolas;color:blue;\">return<\/span><span style=\"font-family:Consolas;color:black;\">;<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\">}<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\"><br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\"><\/span><span style=\"font-family:Consolas;color:green;\">\/\/ Get the parameters<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\"><\/span><span style=\"font-family:Consolas;color:blue;\">string<\/span><span style=\"font-family:Consolas;color:black;\"> fileName = args[<\/span><span style=\"font-family:Consolas;color:red;\">0<\/span><span style=\"font-family:Consolas;color:black;\">];<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\"><\/span><span style=\"font-family:Consolas;color:blue;\">string<\/span><span style=\"font-family:Consolas;color:black;\"> path = args[<\/span><span style=\"font-family:Consolas;color:red;\">1<\/span><span style=\"font-family:Consolas;color:black;\">];<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\"><br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\">Console.Write(String.Format(&#8220;<\/span><span style=\"font-family:Consolas;color:teal;\">Searching for files in {0}<\/span><span style=\"font-family:Consolas;color:black;\">&#8220;, path));<br \/><\/span><\/span><span style=\"font-family:Consolas;font-size:85%;color:black;\"><o:p><br \/><\/o:p><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\">FastZip fZip = <\/span><span style=\"font-family:Consolas;color:blue;\">new<\/span><span style=\"font-family:Consolas;color:black;\"> FastZip();<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\">fZip.CreateZip(fileName, path, <\/span><span style=\"font-family:Consolas;color:blue;\">true<\/span><span style=\"font-family:Consolas;color:black;\">, &#8220;&#8221;);<\/span><span style=\"font-family:Consolas;color:green;\">\/\/ Still need to figure out how<br \/>he filter works!?!?!<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\">}<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\"><br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\"><\/span><span style=\"font-family:Consolas;color:blue;\">private<\/span><span style=\"font-family:Consolas;color:black;\"> <\/span><span style=\"font-family:Consolas;color:blue;\">static<\/span><span style=\"font-family:Consolas;color:black;\"> <\/span><span style=\"font-family:Consolas;color:blue;\">void<\/span><span style=\"font-family:Consolas;color:black;\"> DumpSyntaxt()<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\">{<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\">Console.WriteLine(&#8220;<\/span><span style=\"font-family:Consolas;color:teal;\">Syntaxt: Zipper.exe &lt;zipFile&gt;<br \/>lt;FolderPath&gt;<\/span><span style=\"font-family:Consolas;color:black;\">&#8220;);<br \/><\/span><\/span><span style=\"font-size:85%;\"><span style=\"font-family:Consolas;color:black;\">Console.WriteLine(&#8220;<\/span><span style=\"font-family:Consolas;color:teal;\">Exemple: Zipper.exe ..test.zip . <\/span><span style=\"font-family:Consolas;color:black;\">&#8220;);<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\">}<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\">}<br \/><\/span><\/span><span style=\"font-family:Consolas;color:black;\"><span style=\"font-size:85%;\">}<br \/><\/span><\/span><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>There are several ways of zipping files. One way I started was to copy the files in the folder into an already existing zip file using a vb script. This was going fine until we had the request to delete the files when the process is done. Unfortunately the zip process thought it was completed &hellip; <a href=\"http:\/\/panahy.nl\/index.php\/2007\/10\/25\/zip-a-folder-using-sharpziplib-assembly-in-c\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Zip a folder using SharpZipLib assembly in C#&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[85,43,87],"tags":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"post-thumbnail":false},"uagb_author_info":{"display_name":"Pouya Panahy","author_link":"http:\/\/panahy.nl\/index.php\/author\/pouya\/"},"uagb_comment_info":3,"uagb_excerpt":"There are several ways of zipping files. One way I started was to copy the files in the folder into an already existing zip file using a vb script. This was going fine until we had the request to delete the files when the process is done. Unfortunately the zip process thought it was completed&hellip;","_links":{"self":[{"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/posts\/108"}],"collection":[{"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/comments?post=108"}],"version-history":[{"count":0,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/posts\/108\/revisions"}],"wp:attachment":[{"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/media?parent=108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/categories?post=108"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/panahy.nl\/index.php\/wp-json\/wp\/v2\/tags?post=108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}