Как прочитать путь к файлу из определенной папки архива 7z с SharpCompress? - PullRequest
0 голосов
/ 08 мая 2019

Я хочу иметь возможность передать имя папки в качестве параметра и получить список путей к файлам из этой папки в архиве 7z.

Итак, мой вызов функции будет выглядеть так:

List<string> filePaths = ReadFilePathsFrom(archivePath, folderName);

Решение, которое я нашел, состоит в том, чтобы перебирать ключи ввода ReaderFactory и проверять, чтобы записи содержали указанное folderName и расширение файла любого типа.

public List<string> ReadFilePathsFrom(string archivePath, string folderName)
    {
      List<string> filePaths = new List<string>();

      using (Stream stream = File.OpenRead(archivePath))
      {
        var reader = ReaderFactory.Open(stream);
        while (reader.MoveToNextEntry())
        {
          if (Regex.IsMatch(reader.Entry.Key, $@"{folderName}/.*\..*"))
          {
            files.Add(Path.Combine(archivePath, reader.Entry.Key));
          }
        }
      }

      return files;
    }

Код, указанный выше, обеспечивает желаемые результаты.Но мне интересно, есть ли лучший способ добиться этого?Может быть, более общий подход без с использованием регулярных выражений?

...