If you want to include zip/unzip functionality in your .NET applications, a very good approach would be using DotNetZip (http://dotnetzip.codeplex.com). Recently, I needed this functionality in an installer application. I know I could use the freely available zip applications such as 7-zip on the development site to zip some files, but when it came to unzipping on the client site, I couldn’t assume that they have that third party application on their computer to unzip the files.
.NET comes with two classes which, at first, may seem suitable for zip/unzipping, but on a closer look, they turn out to be not what you may want. The System.IO.Compression
class is intended to be used for one file, not a collection of files, and it does not exactly create Zip files. System.IO.Packaging
is also not suitable for typical zip/unzipping. It is intended for working with Open Packages. It adds some XML files to the package in addition to the files you specify.
DotNetZip is an Open-Source project that delivers the zip/unzip functionality in a very easy way to use. You add the DLL (ionic.zip.dll) to your project and then you can zip files within a directory, just like this:
Dim zipFileName As String = "MyZipFile.zip"
Dim fileNames As String() = Directory.GetFiles(txtStorageDirectory.Text)
Using zip As Ionic.Zip.ZipFile = New Ionic.Zip.ZipFile
For Each file In fileNames
zip.AddFile(file)
Next
zip.Save(zipFileName)
End Using
I have over 17 years of experience in software development in a variety of fields. For last 7 years the emphasis has been mostly on .NET technology (C# and VB.NET) which includes WPF, WCF and ASP.NET AJAX. Also have SQL Server experience including SSIS and SSRS. My blog (http://morrisbahrami.blogspot.com) has a collection of tips and general info for Microsoft Developers.