Gzipped内容并不反映输入

时间:2017-01-20 12:29:49

标签: c# gzip

我有一个非常简单的gzip方法:

"this is a test"

但是,单元测试失败了。即使传递一个简单的短串也不能正确地获得gzipp。例如[31,139,8,0,0,0,0,0,4,0]成为一个包含10个元素的字节数组:@Scheduled(cron = "50 59/15 * * * *") 这当然不能正确解压缩。这里出了什么问题?这直接来自msdn!

1 个答案:

答案 0 :(得分:1)

您需要 flush 关闭流以进行压缩。在您致电mso.ToArray()时,GZipStream尚未压缩任何内容,正在等待更多数据。

一个简单的解决方案:

public byte[] Compress(string input)
{
    var bytes = Encoding.UTF8.GetBytes(input);

    using (var msi = new MemoryStream(bytes))
    using (var mso = new MemoryStream())
    {
        using (var gz = new GZipStream(mso, CompressionMode.Compress))
        {
            msi.CopyTo(gz);
        }

        return mso.ToArray();
    }
}