Бесплатная библиотека сжатия для C #, поддерживающая 7zip (LZMA)

У меня есть программа (написанная на C #), которая читает / записывает свои данные напрямую (прямой доступ к файлам без сервера) в файлы базы данных firebird. Для лучшего обмена я хочу (раз) сжимать их при импорте / экспорте для лучшего обмена через Интернет без необходимости внешней программы для (раз) сжатия.

Я знаю #ziplib, который поддерживает Zip, GZip, Tar и BZip2.

Какие еще бесплатные библиотеки сжатия для C # вы знаете? Есть ли библиотека .NET, которая поддерживает LZMA, чтобы я мог читать / писать файлы ".7z"?


person Xn0vv3r    schedule 16.01.2009    source источник


Ответы (5)


Есть хорошая статья Питера Бромберга:

7Zip (LZMA) Сжатие в памяти с помощью C #

Показывает простой класс C # SevenZip.Compression.Lzma.SevenZipHelper для обеспечения высокого сжатия объектов в памяти с помощью C #. Добавляет новый класс сжатия файлов cookie LZMA формата 7Zip в ранее опубликованную утилиту CookieCompression.

person splattne    schedule 16.01.2009
comment
Внешние ссылки @Kissaki подходят для определенных ситуаций; в том числе: 1) Количество соответствующего внешнего материала огромно, например, спецификация. 2) Ссылки, содержащие только вспомогательную информацию 3) материалы, которые нельзя скопировать из-за авторских прав - person Max Hodges; 23.03.2019
comment
Я не уверен, почему в этом ответе использовался этот конкретный URL-адрес web.archive.org, но исходный URL-адрес nullskull.com/a/768/7zip-lzma-inmemory-compression-with-c.aspx. Кроме того, некоторую полезную информацию с примерами можно найти на странице stackoverflow.com/a/8605828/1039753. - person Arvo Bowen; 07.02.2020

7-zip имеет бесплатный исходный код, общедоступный C # SDK для алгоритма LZMA:

http://www.7-zip.org/sdk.html

person Sebastian Dietz    schedule 16.01.2009
comment
Возможно, стоит отметить, что это бесплатный исходный код, общественное достояние и на C # :) - person Jon Skeet; 16.01.2009
comment
@Jon Skeet: Ты прав. Добавил эту информацию. - person Sebastian Dietz; 16.01.2009
comment
Некоторые другие полезные примеры его использования можно найти на странице stackoverflow.com/a/8605828/1039753. - person Arvo Bowen; 07.02.2020

Вы можете попробовать SevenZipSharp.

person markhor    schedule 23.02.2009
comment
Это под LGPL v3.0, если кому нужна лицензия. - person Julien Roncaglia; 23.02.2009

Это малоизвестный факт, но библиотека .NET включает API упаковки / сжатия

person aku    schedule 16.01.2009
comment
Вот пример использования этого API: syntaxwarriors.com/2012/ - person JensB; 23.09.2012
comment
Эта MS специфична? В настоящее время я не хотел бы больше использовать решение только для MS. Я имею в виду, что если я упаковываю файл, я ожидаю, что он будет использоваться и на машинах, отличных от MS. - person tmighty; 13.03.2014
comment
@JensB эта ссылка теперь мертва. - person Arvo Bowen; 07.02.2020
comment
@ArvoBowen Посмотрите здесь: stackoverflow.com/questions/940582/ - person JensB; 07.02.2020
comment
@JensB - отличный вопрос, но я не думаю, что он имеет какое-либо отношение к 7zip (и именно поэтому я пришел, чтобы увидеть этот вопрос. В итоге я получил SDK 7zip от 7-zip.org/sdk.html и прочтите статью по адресу nullskull.com/a/768/7zip-lzma-inmemory-compression-with-c.aspx. Я смог использовать этот SevenZipHelper.cs файл с SDK с 7-zip.org и заставил его работать. - person Arvo Bowen; 07.02.2020
comment
Это связано с предложенным ответом. Как это сделать изначально на C #. Без библиотек, что когда-то показывала мертвая ссылка. - person JensB; 07.02.2020

Если вы пишете отдельные файлы, вы можете просто рассматривать его как поток и использовать встроенный _ 1_ / DeflateStream (хотя в некоторых тестах, которые я проводил, #ZipLib превосходил предложение MS как по соотношению сторон, так и по скорости). Или где-то в фреймворке есть встроенная поддержка zip. А вот насчет LZMA я не знаю.

person Marc Gravell    schedule 16.01.2009
comment
Остерегайтесь: GZipStream имеет ограничение на размер 4 Гб - person Alex Fihman; 08.05.2010
comment
пожалуйста, обратитесь к stackoverflow.com/questions/505190/net-deflatestream-4gb -limit - person ralf.w.; 17.05.2011