извлекать ISO с WinRar автоматически с помощью C # или партии
Я пытаюсь извлечь ISO в папку с тем же именем без .iso в конце.
У меня проблема с winrar, так как он не запустит распаковку, когда я начну с поиска, который начинается в папке с ISO.
UPDATED with answer code
<code>private void ExtractISO(string toExtract, string folderName) { // reads the ISO CDReader Reader = new CDReader(File.Open(toExtract, FileMode.Open), true); // passes the root directory the folder name and the folder to extract ExtractDirectory(Reader.Root, folderName /*+ Path.GetFileNameWithoutExtension(toExtract)*/ + "\\", ""); // clears reader and frees memory Reader.Dispose(); } private void ExtractDirectory(DiscDirectoryInfo Dinfo, string RootPath, string PathinISO) { if (!string.IsNullOrWhiteSpace(PathinISO)) { PathinISO += "\\" + Dinfo.Name; } RootPath += "\\" + Dinfo.Name; AppendDirectory(RootPath); foreach (DiscDirectoryInfo dinfo in Dinfo.GetDirectories()) { ExtractDirectory(dinfo, RootPath, PathinISO); } foreach (DiscFileInfo finfo in Dinfo.GetFiles()) { using (Stream FileStr = finfo.OpenRead()) { using (FileStream Fs = File.Create(RootPath + "\\" + finfo.Name)) // Here you can Set the BufferSize Also e.g. File.Create(RootPath + "\\" + finfo.Name, 4 * 1024) { FileStr.CopyTo(Fs, 4 * 1024); // Buffer Size is 4 * 1024 but you can modify it in your code as per your need } } } } static void AppendDirectory(string path) { try { if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } } catch (DirectoryNotFoundException Ex) { AppendDirectory(Path.GetDirectoryName(path)); } catch (PathTooLongException Ex) { AppendDirectory(Path.GetDirectoryName(path)); } } </code>
Пользователь выбирает папку для извлечения (.ISO) для извлечения. Затем я использую его в Process.Start () в фоновом режиме. Это просто открывает программное обеспечение для монтирования и не извлекает ISO в нужное имя папки.
Заранее спасибо за помощь.
Или если бы кто-нибудь мог дать мне пакет для извлечения ISO вместо этого и вызова его из c #, передавая в Extract и имя папки, что также было бы полезно.
Спасибо