I use SharpZipLib for gzip on a Windows Mobile application written in c#
I have this code
public static bool gzDecompressFile(String inputFilePath, String outputFilePath)
{
if (!File.Exists(inputFilePath))
return false;
if (File.Exists(outputFilePath))
File.Delete(outputFilePath);
FileStream fs = File.OpenRead(inputFilePath);
FileStream fsOut = File.OpenWrite(outputFilePath);
GZipInputStream gzipIn = new GZipInputStream(fs);
// Compress file in 1kb chunks
byte[] chunk = new byte[1024];
int read = 1;
while (read > 0)
{
read = gzipIn.Read(chunk, 0, chunk.Length);
if (read > 0)
{
fsOut.Write(chunk, 0, read);
}
}
fsOut.Close();
fs.Close();
return true;
}
For a 1.6MB --> 7MB decompression it takes 4-5 minutes.
Do you know a better one for Compact Framework?
Decompressing 1.6MB to 7MB in over 4 minutes is dreadfully slow.
Some items that come to mind:
We originally started with SharpLibZip but switched to the commercial Xceed ZIP.NET library to take advantage of the batching capabilities (and the support for both .NET and .NET Compact Frameworks). The Xceed library also supports GZip. Even on our archaic 400 MHz Windows CE 4.2 devices it takes us only about 20-30 seconds to decompress a 6 MB file (albeit in a ZIP using XCeed ZIP.NET).
Also, if I'm not mistaken, I believe .NET Compact Framework has support for GZip. On a side note, place your FileStreams in using statements to ensure they are closed in the event an exception occurs in the middle of your method.