/// <summary> /// 解压 /// </summary> /// <param name="param"></param> /// <returns></returns> static public void DecompressByteZip(byte[] inBytes, uint startPos, uint inLen, ref byte[] outBytes, ref uint outLen) { byte[] writeData = new byte[4096]; MemoryStream outStream = new MemoryStream(); MemoryStream ms = new MemoryStream(); ms.Write(inBytes, 0, (int)inLen); ms.Position = 0; ZipInputStream zipStream = new ZipInputStream(ms); zipStream.GetNextEntry(); try { int size = 0; while ((size = zipStream.Read(writeData, 0, writeData.Length)) > 0) { outStream.Write(writeData, 0, size); } zipStream.Flush(); zipStream.Close(); // 一定要先 Close ZipOutputStream ,然后再获取 ToArray ,如果不关闭, ToArray 将不能返回正确的值 outBytes = outStream.ToArray(); outLen = (uint)outBytes.Length; outStream.Close(); } finally { zipStream.Close(); ms.Close(); outStream.Close(); } }