ZipArchive ZipFile не сжимает

Я использую System.IO.Compression в.net 4.5, а ZipArchive и ZipFile используются для добавления текстовых файлов в архив. Есть около 75 файлов. Файлы, когда положить в папку и измерить размер, это было около 15 КБ

Но при использовании для помещения в архив с использованием ZipArchive размер создаваемого zip-файла составлял 21 КБ. Я делаю что-то не так или этот ZipArhive просто помещает файлы в один архив, а не сжимает их?

Это логарифм Deflate используется для создания.zip? Это то, что я сделал. Можно ли использовать сжатие высокого уровня? Для.7zip размер файла еще меньше, всего около 1 КБ.

 using (ZipArchive zippedFile = ZipFile.Open(zipFileName, ZipArchiveMode.Create))
                {
                    foreach (string file in filesTobeZipped)
                    {
                        zippedFile.CreateEntryFromFile(file, Path.GetFileName(file), CompressionLevel.Optimal);
                    }
                }

1 ответ

Каждая запись в zip-файле имеет служебную информацию для локальных и центральных заголовков в 76 байтов плюс длину имени файла с путем, дважды, плюс одну конечную запись в 22 байта. Для 75 файлов, каждый из которых имеет, скажем, трехсимвольное имя, общий объем служебных данных составит около 6 КБ. Каждый файл имеет в среднем около 200 байт в несжатом виде, что слишком мало для эффективного сжатия. Если бы каждый файл оставался 200-байтовой записью в zip-файле, то у вас получился бы 21K-файл zip. Что на самом деле то, что вы получили.

Другие вопросы по тегам