Я пытаюсь использовать библиотеку SevenZipSharp и/или Unrar в C# WinForms .NET 3.5. У меня есть эта проблема с несколькими архивами rar, которые имеют разные имена, например:
- .rar, r01, r02, r03 и так далее (это легко)
какой-то файл01.rar, какой-то файл02.rar, какой-то файл03.rar
.001, .002, 003 и так далее.
Если я укажу Unrar или SevenZipSharp на неправильный архив, он распакует этот конкретный архив, а остальные останутся нераспакованными. Так что я должен указать правильный (если я не делаю что-то не так).
Как лучше всего это проверить? На данный момент я проверяю, есть ли в каталоге более одного файла .rar, и если да, то я проверяю наличие 01.rar. Если есть только один и .rar и пара r01, то я получаю .rar, но это кажется немного неправильным.
Есть ли способ заставить SevenZip или Unrar фактически распаковывать весь мульти-RAR-пакет, просто указав на любой файл .rar? или .001 ?
Сумасшедший мальчик
РЕДАКТИРОВАТЬ:
Я попытался использовать следующий код, чтобы получить информацию, предложенную в одном ответе, но он не смог предоставить обещанную информацию. extr.ArchiveFileData возвращает 0 для zip и 32 для любого предоставленного rar, будь то rar или r01.
using (SevenZipExtractor extr = new SevenZipExtractor(fileName)) {
foreach (var var in extr.ArchiveProperties) {
string attributes = var.Name;
object test = var.Value;
if (test == null) {
test = "THIS";
}
MessageBox.Show(attributes.ToString(), test.ToString());
}
foreach (var var in extr.ArchiveFileData) {
MessageBox.Show(var.Attributes.ToString());
}
}