Uncompressing UNIX *.Z files
December 6th, 2009
8 comments
I searched online for a .NET library that can be used to decompress *.Z files (compressed by the UNIX compress utility) but was unable to find anything non-commercial. I found however some code in Java that looked promising, so I ported it to C#. I integrated the resulting code with the SharpZipLib library, but until that gets officially integrated and released, I decided to release a stand-alone version here.
The code is contained in a single file (download LzwInputStream.cs) and is pretty straight-forward to use. The following example shows how to uncompress a *.Z file using c-sharp.
using System;
using System.IO;
using Ebixio.LZW;
class MainClass
{
public static void Main(string[] args)
{
byte[] buffer = new byte[4096];
string outFile = Path.GetFileNameWithoutExtension(args[0]);
using (Stream inStream = new LzwInputStream(File.OpenRead(args[0])))
using (FileStream outStream = File.Create(outFile)) {
int read;
while ((read = inStream.Read(buffer, 0, buffer.Length)) > 0) {
outStream.Write(buffer, 0, read);
}
}
}
}