adamhathcock / sharpcompress

SharpCompress is a fully managed C# library to deal with many compression types and formats.
MIT License
2.29k stars 482 forks source link

Reading a rar stream from a rar file gets NotSupportedException Specified method is not supported #861

Open Sonic3R opened 3 months ago

Sonic3R commented 3 months ago

Hi,

I'm using latest library version 0.37.2, at this moment of creating issue.

I have multi volume archive protected by password. That archive contains a subset of other archives, rar files especially.

There is my code:

var folder = @"D:\myfolder";
var rars = Directory.GetFiles(folder, "*.rar");
var pass = "abcdef1230213";

using var archive = RarArchive.Open(rars.Select(File.OpenRead), new SharpCompress.Readers.ReaderOptions { Password = pass });
foreach (var entry in archive.Entries.Where(c => !c.IsDirectory))
{
  Console.WriteLine(entry.Key);

  if (entry.Key!.EndsWith(".rar"))
  {
        using var stream = entry.OpenEntryStream();
        var r = RarArchive.IsRarFile(stream);
        using var subArchive = RarArchive.Open(stream);
        if (subArchive.Entries.Count > 0)   // here is the exception occurrence
        {
            foreach (var subEntry in subArchive.Entries.Where(c => !c.IsDirectory))
            {
                Console.WriteLine(subEntry.Key);
            }
        }
    }
}

What I'm doing wrong ?

adamhathcock commented 3 months ago

Maybe the inner rar needs a password? I can't tell from the usage, A full stacktrace would help with the password issue