Да, я знаю GZipStream, или DeflateStream является общими в Платформе.NET, которые обрабатывают сжатие/распаковку.
Я хочу иметь функции сжатия/распаковки в своей программе, но
Я желаю Платформе.NET C# один, не сторонний открытый исходный код. Я не могу использовать из-за тех ограничений авторского права в моей программе.
GZipStream и DeflateStream не так хороши. для, например, GZipStream сжимают файл до 480 КБ, в то время как 7Zip сжимают тот же файл до размера 57 КБ.
Microsoft имеет другие хорошие методы сжатия???
Спасибо
GZipStream и DeflateStream специально предназначены для сжатых потоков, а не для общего сжатия файлов для хранения.
Кроме этих классов, сжатие не встроено в .NET. Если вы хотите получить высококачественное сжатие, вам придется обратиться к сторонним библиотекам. Посмотрите http://www.7-zip.org/sdk.html для библиотеки 7zip с открытым исходным кодом.
вы также можете использовать ZLib с открытым исходным кодом (http://www.zlib.net/) с PInvoke, или использовать обертку для него (я использовал zlib.net - http://www.componentace.com/zlib_.NET.htm - но я думаю, что у него были некоторые ошибки). Это менее удобно, чем управляемые библиотеки, но более эффективно, чем DeflateStream/GZipStream (которые одинаковы, за исключением дополнительного CRC в GZipStream).
У меня нет статистических данных о степени сжатия, но я много лет успешно использовал библиотеку SharpZipLib .
Существует управляемая обертка для 7zip. Лицензия - LGPL, поэтому вы можете использовать ее в проектах с закрытым исходным кодом. Я не знаю, подходит ли она под ваши лицензионные требования, поскольку вы их не указали.