我有一个非常简单的gzip方法:
"this is a test"
但是,单元测试失败了。即使传递一个简单的短串也不能正确地获得gzipp。例如[31,139,8,0,0,0,0,0,4,0]
成为一个包含10个元素的字节数组:@Scheduled(cron = "50 59/15 * * * *")
这当然不能正确解压缩。这里出了什么问题?这直接来自msdn!
答案 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();
}
}