Извлечь сплит RAR файл - PullRequest
       74

Извлечь сплит RAR файл

0 голосов
/ 17 января 2019

Мне нужно извлечь сплит rar-файл (r00, r01, r02, ...) в C #.

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

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

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



* ОБНОВЛЕНИЕ 17/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?



* ОБНОВЛЕНИЕ 01/20/2019 *

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

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

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

1 Ответ

0 голосов
/ 17 января 2019

На сайте 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);
}
...