我试图在我的UWP应用程序中压缩一些文本。我创建了这个方法,以便以后更容易:
public static byte[] Compress(this string s)
{
var b = Encoding.UTF8.GetBytes(s);
using (MemoryStream ms = new MemoryStream())
using (GZipStream zipStream = new GZipStream(ms, CompressionMode.Compress))
{
zipStream.Write(b, 0, b.Length);
zipStream.Flush(); //Doesn't seem like Close() is available in UWP, so I changed it to Flush(). Is this the problem?
return ms.ToArray();
}
}
但不幸的是,无论输入文本是什么,它总是返回10个字节。是因为我没有在.Close()
上使用GZipStream
吗?
答案 0 :(得分:3)
您过早地返回字节数据。 Close()方法由Dispose()方法替换。因此,GZIP流只有在 >>处理后才会写入{<1}}块。
using(GZipStream) {}