DotNetZip没有压缩我的字符串

时间:2010-12-08 01:36:21

标签: .net compression dotnetzip

我使用的是DotNetZip版本1.8.4.5。我此时无法升级。

我从服务器向客户端应用程序发送一个大型列表。我将我的List序列化为字符串变量(contentsAsString)。然后我将contentsAsString压缩成MemoryStream并将字节数组传递回我的客户端。我的压缩字节数组长度是2087188(1.99 MB)。

如果我获取contentsAsString的值并将其保存到文本文件,则该文件为1.99 MB(与上面相同)。如果我使用Windows压缩并压缩文本文件,则生成的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();
            }

        }

    }

3 个答案:

答案 0 :(得分:2)

请注意,如果GZIP或Deflate压缩也适合您,.NET Framework(2.0+)为流提供GZIP和Deflate压缩(在System.IO.Compression命名空间中找到)

答案 1 :(得分:2)

正如我在评论中所提到的,使用最新的1.9版DotNetZip正如我所料压缩。找不到1.8.4.5测试,所以我认为最好升级。

谢谢。

答案 2 :(得分:0)

我不知道这么酷的库,但看看他们的参考我发现了一些关于压缩方法的东西。

http://cheeso.members.winisp.net/DotNetZipHelp/html/f52f1f79-0eed-92c8-5938-89ccfc77ca53.htm

这有帮助吗?

我也发现了这个: http://www.java2s.com/Open-Source/CSharp/Development/DotNetZip/Ionic/Zip/Tests/Compatibility.cs.htm

相关问题