【问题标题】:Ionic.zip Gzipstream Decompress ,Bad state (invalid stored block lengths)Ionic.zip Gzipstream Decompress ,Bad state (无效的存储块长度)
【发布时间】:2017-01-06 06:44:20
【问题描述】:

我使用 ionic.zip gzipstream 压缩和解压缩 byte[], 它可以很好地压缩,但是当它从 byte[] 压缩时解压缩它告诉

错误状态(无效的存储块长度)

下面是我的代码

Trace.WriteLine(s.Length);
var b = Encoding.UTF8.GetBytes(s);
Trace.WriteLine(b.Length);

byte[] b2;

var sw = new Stopwatch();
sw.Start();
using (var m = new MemoryStream())
{
    var stream = new GZipStream(m, CompressionMode.Compress,true);
    stream.Write(b,0,b.Length);
    stream.Flush();
    b2 = m.GetBuffer();
    stream.Close();
    sw.Stop();
    Trace.WriteLine(sw.ElapsedMilliseconds);
    Trace.WriteLine(b2.Length);
}

using (var m2 = new MemoryStream())
{
    m2.Write(b2,0,b2.Length);
    m2.Position = 0;
    var stream = new GZipStream(m2,CompressionMode.Decompress,true);
    var m3 = new MemoryStream();
    var buffer = new byte[1024];
    var n = 1;
    while (n != 0)
    {
        n = stream.Read(buffer, 0, buffer.Length);
        if (n > 0)
        {
            m3.Write(buffer,0,n);
        }
    }
    var b3 = m3.GetBuffer();
    Trace.WriteLine(b3);
}

解压码就是文档说的。here

我没有找到其他文档, 解压的时候怎么办?

【问题讨论】:

    标签: gzipstream


    【解决方案1】:

    啊~~~,太傻了。

    有 byte[] 压缩和解压缩方法。

    GZipStream.CompressBuffer()GZipStream.UncompressBuffer()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-05
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 2019-12-07
      相关资源
      最近更新 更多