Я использую DotNetZip версии 1.8.4.5. Я не могу обновить в это время.
Я отправляю большой список в мое клиентское приложение с моего сервера. Я сериализую свой список в строковую переменную (contentsAsString). Затем я сжимаю ContentAsString в MemoryStream и передаю байтовый массив обратно моему клиенту. Длина моего сжатого байтового массива составляет 2087188 (1,99 МБ).
Если я возьму значение contentAsString и сохраню его в текстовом файле, его размер составит 1,99 МБ (аналогично описанному выше). Если я использую Сжатие Windows и сжимаю текстовый файл, в результате получается zip-файл размером 132 КБ.
Почему мой MemoryStream не сжимается до 132 КБ? Вот код, который я использую:
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();
}
}
}