Есть ли встроенная zip-библиотека в .NET 3.5?
Если нет, то какие популярные библиотеки с открытым исходным кодом .net zip.
Есть ли встроенная zip-библиотека в .NET 3.5?
Если нет, то какие популярные библиотеки с открытым исходным кодом .net zip.
Нет встроенной библиотеки. Есть варианты с открытым исходным кодом.
DotNetZip является одним. Простой, простой в использовании. Он имеет хорошие возможности: AES Encryption, регулярное шифрование, потоки, ZIP64, комментарии к файлам, Unicode, события прогресса и многое другое. И это бесплатно и с открытым исходным кодом.
Вот пример кода.
// extract all Photoshop files larger than 100mb
using (ZipFile zip1 = ZipFile.Read(ZipFileName))
{
var LargePhotoShopFiles = zip1.SelectEntries("name = *.psd and size > 100mb");
foreach (ZipEntry e in LargePhotoShopFiles)
{
if (e.UsesEncryption)
e.ExtractWithPassword("unpackDirectory", "VerySecret!");
else
e.Extract("unpackDirectory");
}
}
EDIT: см. примечание в комментариях - теперь SharpZipLib не поддерживается, и вы, вероятно, захотите его избежать.
Открытый исходный код: # ZipLib
Я считаю, что классы в пространстве имен System.IO.Compression
отлично подходят для сжатия/распаковки одного потока данных, но в инфраструктуру ничего не встроено, чтобы справляться с фактическими zip файлами.
EDIT: Как отмечено в ответе Ants, System.IO.Packaging.ZipPackage, но это, безусловно, похоже на то, что действительно предназначено для использования в WPF, и не было бы очень удобно использовать для общей обработки файлов zip. Стоит посмотреть, хотя. Я не знал об этом раньше, хотя... определенно стоит исследовать.
Проверьте класс System.IO.Packaging.ZipPackage.
7Zip поможет и доступен на нескольких языках
Попробуйте System.IO.Compression.DeflateStream
.
Я буду второй, чтобы рекомендовать http://www.7-zip.org/sdk.html LZMA SDK, но это не ZIP.
System.IO.Compression имеет ZipArchive класс с .Net 4.5.