我使用的是 DotNetZip 1.8.4.5 版。我目前无法升级。
我正在从我的服务器向我的客户端应用程序发送一个大列表。我正在将我的列表序列化为一个字符串变量(contentsAsString)。然后我将 contentsAsString 压缩到 MemoryStream 中,并将字节数组传回给我的客户端。我的压缩字节数组长度为 2087188 (1.99 MB)。
如果我取 contentsAsString 的值并将其保存到文本文件中,则该文件为 1.99 MB(同上)。如果我使用 Windows Compression 并压缩文本文件,则生成的 zip 文件为 132 KB。
为什么我的 MemoryStream 没有压缩到 132 KB?这是我正在使用的代码:
private byte[] zipContents<T>(List<T> contents)
{
using (Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile())
{
using (MemoryStream ms = new MemoryStream())
{
string contentsAsString = Utility.SerializeListToString<T>(contents);
zip.AddEntry("stream.zip", null, contentsAsString);
zip.Save(ms);
return ms.ToArray();
}
}
}