Я отслеживаю исходный размер файлов, которые я сжимаю, используя класс .Net GZipStream, и кажется, что файл, который, как я думал, был сжат, увеличился в размере. Это возможно?Может ли сжатие GZip (через .net) увеличить размер файла?
Это, как я делаю сжатие:
Byte[] bytes = GetFileBytes(file);
using (FileStream fileStream = new FileStream("Zipped.gz", FileMode.Create))
{
using (GZipStream zipStream = new GZipStream(fileStream, CompressionMode.Compress))
{
zipStream.Write(bytes, 0, bytes.Length);
}
}
Однако обратите внимание, что любая схема сжатия, которая способна сжимать некоторые входные данные будут также, безусловно, производят файлы больше для некоторых других входных данных (проверка на принцип дырочной дыры). – gusbro
Да, из-за причины. В основном любая схема сжатия основана на том факте, что данные являются избыточными, поэтому их можно уменьшить за счет использования конкретных схем кодирования. Но это не всегда так, например. если вы попытаетесь сжать файл со случайными данными в нем или уже скомпилированы с хорошим компрессором. Но исходный вопрос касался конкретной реализации компрессора (а не самого алгоритма сжатия). Хорошая компрессионная герметизация может отбросить, чтобы сохранить файл без сжатия, так что почти не увеличивая его размер. Я не думаю, что Майк спрашивает о том, что файлы результатов увеличены до нескольких байтов заголовка. –