C#用Zlib压缩或解压缩字节数组
/// <summary> /// 复制流 /// </summary> /// <param name="input">原始流</param> /// <param name="output">目标流</param> public static void CopyStream(System.IO.Stream input, System.IO.Stream output) { byte[] buffer = new byte[2000]; int len; while ((len = input.Read(buffer, 0, 2000)) > 0) { output.Write(buffer, 0, len); } output.Flush(); } /// <summary> /// 压缩字节数组 /// </summary> /// <param name="sourceByte">需要被压缩的字节数组</param> /// <returns>压缩后的字节数组</returns> private static byte[] compressBytes(byte[] sourceByte) { MemoryStream inputStream = new MemoryStream(sourceByte); Stream outStream = compressStream(inputStream); byte[] outPutByteArray = new byte[outStream.Length]; outStream.Position = 0; outStream.Read(outPutByteArray, 0, outPutByteArray.Length); outStream.Close(); inputStream.Close(); return outPutByteArray; } /// <summary> /// 解压缩字节数组 /// </summary> /// <param name="sourceByte">需要被解压缩的字节数组</param> /// <returns>解压后的字节数组</returns> private static byte[] deCompressBytes(byte[] sourceByte) { MemoryStream inputStream = new MemoryStream(sourceByte); Stream outputStream = deCompressStream(inputStream); byte[] outputBytes = new byte[outputStream.Length]; outputStream.Position = 0; outputStream.Read(outputBytes, 0, outputBytes.Length); outputStream.Close(); inputStream.Close(); return outputBytes; } /// <summary> /// 压缩流 /// </summary> /// <param name="sourceStream">需要被压缩的流</param> /// <returns>压缩后的流</returns> private static Stream compressStream(Stream sourceStream) { MemoryStream streamOut = new MemoryStream(); ZOutputStream streamZOut = new ZOutputStream(streamOut, zlibConst.Z_DEFAULT_COMPRESSION); CopyStream(sourceStream, streamZOut); streamZOut.finish(); return streamOut; } /// <summary> /// 解压缩流 /// </summary> /// <param name="sourceStream">需要被解压缩的流</param> /// <returns>解压后的流</returns> private static Stream deCompressStream(Stream sourceStream) { MemoryStream outStream = new MemoryStream(); ZOutputStream outZStream = new ZOutputStream(outStream); CopyStream(sourceStream, outZStream); outZStream.finish(); return outStream; }
zlib.NET库下载:http://www.componentace.com/zlib_.NET.htm