Нужно сжать / GZ файлы, которые больше, чем 4 ГБ в C # - PullRequest
2 голосов
/ 11 февраля 2010

Я кодировал решение для gz, некоторые журналы транзакций регистрируются, однако некоторые из них имеют размер больше 4 ГБ, и я получаю ошибку: -

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

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

Ответы [ 3 ]

3 голосов
/ 11 февраля 2010
Технически,

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

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

1 голос
/ 11 февраля 2010

Поскольку это очень простое приложение, я решил открыть экземпляр 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();
    }

Хорошо работает для случая, который я пытаюсь раскрыть.

1 голос
/ 11 февраля 2010

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

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

См. Может ли gzip обрабатывать файлы размером более 4 гигабайт?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...