2009-06-22 2 views
10

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

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

+3

Dupe http://stackoverflow.com/questions/11737/net-library-to-unzip-zip-and-rar-files –

+0

Он просто хочет, чтобы распаковать Я хочу прочитать содержимое, как поток .... – Peter

ответ

13

Низкий уровень Lib для работы с 7z.dll (поддерживает RAR архивы, incliding из нескольких частей, работает с .NET потоков):

C# (.net) interface for 7-Zip archive dlls

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

SevenZipSharp

1

Chilkat Rar library

Более конкретно: link

+0

Могу ли я читать rar-контент, как поток с этим? – Peter

+0

Нет. Все примеры, на которые я смотрел, были извлечены на диск. – Nifle

+0

yes: http://www.example-code.com/csharp/rar_list.asp – RvdK

0

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

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

1

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

+0

Это то, что я использую В данный момент! Большое спасибо за отличный продукт! – Peter

0

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

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

1

Установка 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); 

        } 
Смежные вопросы