Извлечь разделенный rar-файл

Мне нужно извлечь разделенный rar-файл (r00, r01, r02,...) на С#.

Единственное, что я нашел, что может быть полезно, это sevenzipsharp. Я не могу найти пример того, что я пытаюсь сделать.

Кто-то сказал, что «документы доступны по адресу https://archive.codeplex.com/?p=sevenzipsharp", но это не очень помогает, так как я не могу найти там никаких примеров.

Я знаю, что все было бы намного проще, если бы я использовал другой формат сжатия, но я не несу ответственности за создание zip-файлов, так что, к сожалению, это не вариант.



* ОБНОВЛЕНИЕ 17 января 2019 г. *

Я пытался:

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            // Toggle between the x86 and x64 bit dll
            var path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), Environment.Is64BitProcess ? "x64" : "x86", "7z.dll");
            SevenZip.SevenZipBase.SetLibraryPath(path);

            using (var file = new SevenZipExtractor(@"F:\ziptest\test.part1.rar"))
            {
                file.ExtractArchive(@"F:\dav\");
            }
        }
    }
}

Но это дает мне ошибку при вызове «ExtractArchive»:

An unhandled exception of type 'SevenZip.SevenZipArchiveException' occurred in SevenZipSharp.dll

Additional information: Invalid archive: open/read error! Is it encrypted and a wrong password was provided?



* ОБНОВЛЕНИЕ 20 января 2019 г. *

В итоге я использовал решение, представленное здесь: Распаковать архив в C#

Я изменил параметры переключателя, чтобы WinRar работал в фоновом режиме, не открывая никаких окон.

Если кто-то действительно предложит решение моих проблем с SevenZipSharp, я все равно хотел бы знать, так как это более «чистый» код.


person doglio    schedule 17.01.2019    source источник
comment
Если вы прочитали предоставленную вами ссылку, там написано See SevenZipTest/Program.cs for simple code examples; SevenZipTestForms is the GUI demo application.   -  person MineR    schedule 17.01.2019


Ответы (1)


На сайте codeplex есть дискуссионный форум, на котором показаны несколько вилок github. Я перешел к этому примеру: https://github.com/squid-box/SevenZipSharp/blob/dev/SevenZip.Tests/SevenZipExtractorTests.cs#L64 предполагает, что вам просто нужно передать первый том конструктору SevenZipExtractor.

using (var extractor = new SevenZipExtractor(@"TestData\multivolume.part0001.rar")) {
    extractor.ExtractArchive(OutputDirectory);
}
person Eugene Marcotte    schedule 17.01.2019