Чтение содержимого файлов RAR с использованием C#

Есть ли способ прочитать содержимое файла RAR (поддержка многофайлового RAR является обязательной)?

Я не хочу извлекать контент на диск, просто читаю его как поток.

6 ответов

Решение

Низкоуровневый lib для работы с 7z.dll (поддерживает rar-архивы, включая multi-part, работает с потоками.net):

C# (.net) интерфейс для 7-Zip архивных библиотек

И еще библиотека высокого уровня, основанная на первом:

SevenZipSharp

Установите NUnrar из Nuget

RarArchive file = RarArchive.Open("rar file path");//@"C:\test.rar"
                    foreach (RarArchiveEntry rarFile in file.Entries)
                    {
                        string path = "extracted file path";//@"C:\"
                        rarFile.WriteToDirectory(path);

                    }

Мой проект unrar, http://nunrar.codeplex.com/ стремится быть очень.NETty и имеет потоковую поддержку. Если вам нужно что-то еще, пожалуйста, предложите или дайте мне патч.

Другая возможность - использовать исполняемый файл командной строки rar в качестве ресурса приложения и вызывать его через System.Diagnostics.Process.

Вы можете перенаправить поток ввода / вывода.

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

ReScene - это проект для воссоздания rar-архивов из извлеченных файлов. Вам нужен файл.srr для этого. Исходный код доступен. Вы можете взглянуть на RarStream.cs.

Другие вопросы по тегам