Список всех встроенных ресурсов в папке
В моем решении a была папка с несколькими файлами. Все эти файлы имеют встроенный ресурс Build Action.
С помощью этого кода я могу получить файл:
assembly.GetManifestResourceStream(assembly.GetName().Name + ".Folder.File.txt");
Но есть ли способ получить все *.txt
файлы в этой папке? Список имен или метод для итерации через все их?
Ответы
Ответ 1
Вы можете проверить
assembly.GetManifestResourceNames()
который возвращает массив строк всех содержащихся ресурсов. Затем вы можете отфильтровать этот список, чтобы найти все ваши файлы *.txt
, хранящиеся в виде встроенных ресурсов.
Подробнее см. Документы MSDN для GetManifestResourceNames.
Ответ 2
Попробуйте это, возвращает массив со всеми .txt файлами внутри каталога Папка.
private string[] GetAllTxt()
{
var executingAssembly = Assembly.GetExecutingAssembly();
string folderName = string.Format("{0}.Resources.Folder", executingAssembly.GetName().Name);
return executingAssembly
.GetManifestResourceNames()
.Where(r => r.StartsWith(folderName) && r.EndsWith(".txt"))
//.Select(r => r.Substring(constantResName.Length + 1))
.ToArray();
}
ПРИМЕЧАНИЕ. Раскомментируйте строку //.Select(...
, чтобы получить имя файла.
Ответ 3
попробуйте с этим. здесь вы получаете все файлы
string[] embeddedResources = Assembly.GetAssembly(typeof(T)).GetManifestResourceNames();
T, конечно, ваш тип. поэтому вы можете использовать его общий
Ответ 4
Просто взломайте это, используйте:
Assembly _assembly;
_assembly = Assembly.GetExecutingAssembly();
List<string> filenames = new List<string>();
filenames = _assembly.GetManifestResourceNames().ToList<string>();
List<string> txtFiles = new List<string>();
for (int i = 0; i < filenames.Count(); i++)
{
string[] items = filenames.ToArray();
if (items[i].ToString().EndsWith(".txt"))
{
txtFiles.Add(items[i].ToString());
}
}