#c# #compression
#c# #сжатие
Вопрос:
Я ищу библиотеку c # с открытым исходным кодом, но лицензированную для разработки в проектах с закрытым исходным кодом (так что что-то вроде стиля MIT / BSD), которая позволяет мне работать со сжатыми файлами. Я действительно не очень разборчив в том, какое сжатие используется, только в том, что это что-то обычное (.zip, .rar, .tar, .tar.gz и т.д. …).
Причина, по которой мне нужна эта функциональность, заключается в том, что я создаю платформу веб-приложений, и прямо сейчас лучшим и простым способом создания и распространения модулей (или подключаемых модулей) для платформы, я думаю, является сжатый файл. Сжатый файл будет содержать .файлы dll, которые будут включать исходный код и razor views, а также любое количество вспомогательных файлов (изображения, dotlesscss, javascript и т.д.). Что я хочу иметь возможность делать через саму платформу веб-приложений, позволяя пользователю иметь возможность просто загружать один сжатый файл, а веб-приложение копировать файл, извлекать из него все файлы и копировать извлеченные файлы в правильные местоположения.
Ответ №1:
Это уже встроено в .net framework 🙂 просто ознакомьтесь с пространством имен сжатия:
http://msdn.microsoft.com/en-us/library/system.io.compression.aspx
Ответ №2:
DotNetZip — довольно популярная библиотека с открытым исходным кодом. В нем используется Microsoft Public License (Ms-PL)
лицензия, о которой вы можете прочитать здесь и посмотреть, соответствует ли она вашим потребностям.
Ответ №3:
.net уже имеет встроенную поддержку gzip и deflate в system.io.compression
Ответ №4:
Если вам нужна функция ZIP, то она на самом деле отсутствует в .Net Framework, и вам нужно обратиться к сторонней библиотеке, такой как SharpZipLib или DotNetZip. SharpZipLib — это не BSD, это GPL или LGPL, и, возможно, вам не подходит, исходя из вашего описания. DotNetZip — это Ms-PL, который похож на BSD, проверьте http://www.opensource.org/licenses/ms-pl .
поток GZIP доступен в пространстве имен System.IO.Compression, которое встроено в библиотеку базовых классов .NET Framework, но этот поток не считывается и не распаковывается tar.gz файлы, которые, я полагаю, вы хотели бы использовать, если бы объединяли несколько файлов вместе. Сам GZIP по умолчанию хранит только ОДИН файл в сжатом архиве, и вы можете использовать этот GZipStream для этого, но он не будет выполнять Tars. SharpZipLib делает Tars, но … лицензия.
Существуют библиотеки tar сторонних производителей Ms-PL (небольшого размера), которые в сочетании с GZIP в .NET позволяют читать tar.gz файлы (или .tgz) легко.
http://cheeso.members.winisp.net/srcview.aspx?dir=Tar
Ответ №5:
Если вы хотите упаковать несколько файлов в один сжатый файл, рассмотрите возможность использования классов из System.IO.Packaging — http://msdn.microsoft.com/en-us/library/ms569886.aspx — позволяет помещать файлы в Zip-файл (требуется один дополнительный XML-файл поверх вашего содержимого).