private static void DecompressAndWriteFile(string destination, ICSharpCode.SharpZipLib.Zip.ZipInputStream source) { FileStream wstream = null; try { // create a stream to write the file to wstream = System.IO.File.Create(destination); const int block = 2048; // number of bytes to decompress for each read from the source byte[] data = new byte[block]; // location to decompress the file to // now decompress and write each block of data for the zip file entry while (true) { int size = source.Read(data, 0, data.Length); if (size > 0) wstream.Write(data, 0, size); else break; // no more data } } catch (Exception) { throw; } finally { if (wstream != null) wstream.Close(); } }