2010-02-11 2 views
2

я закодировал soltion для GZ некоторых журналов транзакций до, однако некоторые из них больше, чем 4gb и ошибка, я получаю это: -нужно сжать/файлы GZ, которые больше, чем 4gb в C#

« gzip-поток не может содержать более 4 ГБ данных »

ОК, поэтому сжатие не поддерживает ничего большего, чем 4 ГБ, есть ли у кого-нибудь хорошие альтернативные библиотеки?

ответ

1

Поскольку это для очень простого приложения, я решил открыть экземпляр Winzip из C#

public static void Compress(FileInfo fi) 
    { 
     System.Diagnostics.Process process; 
     process = new System.Diagnostics.Process(); 
     process.EnableRaisingEvents = true; 

     string cmd = string.Format(@"/C ""c:\program files\winzip\WINZIP32.EXE"" -min -a {0} {1}", "C:\\testzipit\\q", fi.FullName ); 
     System.Diagnostics.Process.Start("CMD.exe", cmd); 
     process.Close(); 
    } 

работает хорошо для случая я пытаюсь решить.

3

Gzip может, технически, использоваться для> 4 ГБ, но по умолчанию стандарт gzip distribution does not support this. Из-за этого многие связанные с gzip инструменты (такие как класс .NET GZipStream) имеют ограничение 4 ГБ.

Возможно, вы захотите использовать коммерческую библиотеку сжатия. Одним из примеров может быть .NET Zip, который поддерживает большие размеры сжатия (через Zip-64).

1

Как вы сжимаете свои файлы? Вы используете сам gzip или библиотеку?

Поддержка Gzip для> 4 ГБ только в более поздних версиях 1.3.х, хотя для источников 1.2.4 предусмотрен патч.

См Can gzip handle files of more than 4 gigabytes?

Отметим также, что могут быть ограничения, основанные на файловой системе вы используете, но если у вас есть файл уже больше, чем 4 ГБ, то мы будем считать, что нет никаких ограничений файловой системы здесь.

Смежные вопросы