Simple zip compression in C#:
private static void ZipCompress()
{
const string srcFile = “DataFile.xml”;
const string desFile = “Compressed.zip”;
FileStream fsIn = null;
FileStream fsOut = null;
GZipStream gzip = null;
byte[] buffer;
try
{
fsOut = new FileStream(desFile, FileMode.Create, FileAccess.Write, FileShare.None);
gzip = new GZipStream(fsOut, CompressionMode.Compress, true);
fsIn = new FileStream(srcFile, FileMode.Open, FileAccess.Read, FileShare.Read);
buffer = new byte[fsIn.Length];
fsIn.Read(buffer, 0, buffer.Length);
fsIn.Close();
gzip.Write(buffer, 0, buffer.Length);
}
catch (Exception ex)
{
System.Diagnostics.Debug.Assert(false, ex.ToString());
}
finally
{
if (gzip != null)
gzip.Close();
if (fsOut != null)
fsOut.Close();
if (fsIn != null)
fsIn.Close();
}
}
Simple zip decompression in C#:
private static void ZipDecompress()
{
const string srcFile = “Compressed.zip”;
const string desFile = “Decompressed.xml”;
FileStream fsIn = null;
FileStream fsOut = null;
GZipStream gzip = null;
const int bufferSize = 4096;
byte[] buffer = new byte[bufferSize];
try
{
fsIn = new FileStream(srcFile, FileMode.Open, FileAccess.Read, FileShare.Read);
fsOut = new FileStream(desFile, FileMode.Create, FileAccess.Write, FileShare.None);
gzip = new GZipStream(fsIn, CompressionMode.Decompress, true);
while (true)
{
int count = gzip.Read(buffer, 0, bufferSize);
if (count != 0)
fsOut.Write(buffer, 0, count);
if (count != bufferSize)
break;
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.Assert(false, ex.ToString());
}
finally
{
if (gzip != null)
gzip.Close();
if (fsOut != null)
fsOut.Close();
if (fsIn != null)
fsIn.Close();
}
}