2025年4月15日 星期二 乙巳(蛇)年 正月十六 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > .net

c#实现与Java无差异的GZip压缩和GZip解压缩

时间:12-19来源:作者:点击数:28

c#实现与Java无差异的GZip压缩和GZip解压缩,其中有个坑就是GZip压缩的时候,只有在GZipStream在Dispose后调应对应MemoryStream.ToArray()所得到的结果才是正确的压缩数据。如果在zipStream.Write(bytes, 0, bytes.Length);后面直接return compressedStream.ToArray();返回的数据是不正确的,大家可以试一下。

  • /// <summary>
  • /// GZip压缩
  • /// </summary>
  • /// <param name="bytes"></param>
  • /// <returns></returns>
  • public static byte[] GZzipCompress(byte[] bytes)
  • {
  • using (var compressedStream = new MemoryStream())
  • {
  • using (var zipStream = new GZipStream(compressedStream, CompressionMode.Compress))
  • {
  • zipStream.Write(bytes, 0, bytes.Length);
  • }
  • return compressedStream.ToArray();
  • }
  • }
  • /// <summary>
  • /// GZip解压缩
  • /// </summary>
  • /// <param name="bytes"></param>
  • /// <returns></returns>
  • public static byte[] GZzipDecompress(byte[] bytes)
  • {
  • using (var compressStream = new MemoryStream(bytes))
  • {
  • using (var zipStream = new GZipStream(compressStream, CompressionMode.Decompress))
  • {
  • using (var resultStream = new MemoryStream())
  • {
  • zipStream.CopyTo(resultStream);
  • return resultStream.ToArray();
  • }
  • }
  • }
  • }

另外,在网上看到有人说C#压缩的数据和Java不一样,头上会比Java的多4个字节,笔者亲自测试用以上方法压缩的结果和Java是一样的,大家也可以亲测一下。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门