DotNetZip バージョン 1.8.4.5 を使用しています。現時点ではアップグレードできません。
サーバーからクライアント アプリケーションに大きなリストを送信しています。リストを文字列変数 (contentsAsString) にシリアル化しています。次に、contentAsString を 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();
}
}
}