Создать архив 7zip с sharpcompress
Мне нужно сжать файл как 7zip с помощью SharpCompress: http://sharpcompress.codeplex.com/
что я сделал следующим образом:
using (var archive = ZipArchive.Create())
{
archive.AddEntry("CompressionTest.pdb", new FileInfo("CompressionTest.pdb"));
using (Stream newStream = File.Create("CompressionTest212.7z"))
{
archive.SaveTo(newStream, SharpCompress.Common.CompressionType.LZMA);
}
}
Процесс сжатия выполнен успешно. Однако сжатый файл не может быть извлечен ни с помощью 7z (http://www.7-zip.org/download.html), ни с помощью winrar.
Я не знаю, если у кого-то тоже возникла такая же проблема и была идея, как ее решить?
Заранее спасибо.
2 ответа
SharpCompress не поддерживает сжатие 7zip. Только декомпрессия, см.: http://sharpcompress.codeplex.com/ (таблица поддерживаемых форматов)
Вы можете использовать собственную библиотеку 7zip для сжатия или использовать обертку с открытым исходным кодом, например: http://sevenzipsharp.codeplex.com/
Я являюсь автором SharpCompress (спасибо, что попробовал его), и сжатие 7Zip не поддерживается: http://sharpcompress.codeplex.com/wikipage?title=Supported%20formats
То, что вы написали, это код для создания стандартного Zip-файла со сжатием LZMA. Возможно, мой код не создает надлежащий zip-файл, но также возможно, что созданный файл не может быть прочитан всеми программами. Формат Zip допускает сжатие LZMA, но не все программы могут этого ожидать. PeaZip (на основе кода архиватора 7Zip) извлекает Zip с помощью LZMA, а WinRAR - нет.
Если вам действительно нужен формат 7Zip, я советую использовать что-то еще. Лично я думаю, что формат 7Zip слишком сложен, и я рекомендую Zip или Tar, а затем просто выбрать вариант сжатия.