Many of today's applications require the capability of extracting certain files from a ZIP archive, either onto the hard disk or into memory. A lot of useful zip libraries for .NET applications abound on the Web (SharpZipLib for .NET Framework is a very known one), but I wanted to use the Info-ZIP library as it was always my favorite library for C++ projects.
Info-ZIP is an Open Source version of Phil Katz's "deflate" and "inflate" routines used in his popular file compression program, PKZIP. Info-ZIP code has been incorporated into a number of third-party products as well, both commercial and freeware. It offers two dynamic link libraries: one for zipping, and one for unzipping.
The Info-ZIP DLLs are free to use and distribute, but they are designed to be used in C/C++ projects, so they're not really .NET-friendly. Also, the Info-ZIP package contains almost no documentation showing how to use the Info-ZIP DLLs.
Therefore, I decided to write a small C# wrapper that provides all the required data types and functions in order to give the possibility to work with the Info-ZIP API.
I built the Info-ZIP .NET wrapper as a C# library named Karna Compression where all the Info-ZIP native types and methods are hidden behind the simple .NET facade. Karna Compression library has two main classes:
KarnaZip is a class for dealing with zip archives that can add, freshen, or move files in an archive.
KarnaUnzip can be used to extract files from a ZIP archive to the hard drive or memory.
Using the code
Creation of zip archive, including password protection and comments, requires just a few lines of code: