Я хочу иметь возможность передать имя папки в качестве параметра и получить список путей к файлам из этой папки в архиве 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;
}
Код, указанный выше, обеспечивает желаемые результаты.Но мне интересно, есть ли лучший способ добиться этого?Может быть, более общий подход без с использованием регулярных выражений?