C# gzip内容不';不能反映输入
我有一个非常简单的gzip方法:C# gzip内容不';不能反映输入,c#,gzip,C#,Gzip,我有一个非常简单的gzip方法: 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(
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();
}
}
然而,单元测试失败了。即使传入一个简单的短字符串也不能正确地进行gzip。e、 g.“这是一个测试”
变成了一个包含10个元素的字节数组:[31139,8,0,0,0,0,4,0]
当然不能正确解压缩。这里怎么了?这是直接来自msdn 您需要刷新并关闭流,以便对其进行压缩。在调用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();
}
}
可能是重复的啊,那肯定是一个陷阱!谢谢