GZipStream - Compress/Decompress a string

Introduction

This article presents two methods to compress and decompress strings using System.IO.Compression.GZipStream.

Context/Problem

After converting code from VB.NET 1.1 to C#.NET 3.5, I needed to change some code using a third party zip class to GZipStream. Code samples found on the web or on VS help where presenting solutions dealing with FileStream but in this case, a string is given as an input parameter.

So the little challenge was to go from a string to a byte array (byte[]) and vice versa without losing a char nor changing its encoding because I ended up finding that System.Text.Encoding.Unicode.GetBytes()/GetString() previously used in the VB code was not acting properly, resulting in a loss of characters. Plus the Flush() method on GZipStream with the compression option doesn't flush everything...

Tips

So as I found no method transforming a string into a byte[] and vice versa without involving encoding specifications, I ended up with a loop and a cast. If you have a better idea, please tell me so.

And I found out, if you only flush a GZipStream instance and retrieve the data from the underlying stream without closing this GZipStream instance, you miss part of the data.

The Code

Compress/Zip a string:


See full detail: http://www.codeproject.com/KB/files/GZipStream.aspx

Comments

Popular posts from this blog

Very fast test data generation using exponential INSERT

Basic concept and fundamentals of ASP.NET MVC (Model View Controller) Architecture

MVC Architecture Model In ASP.NET