0
Так что я не могу найти хороший пример этого в любом месте. Я нашел хороший пример из this вопроса о выборе случайного файла из каталога, но мне нужно выбрать случайный файл из дерева каталогов (неизвестной глубины). Этот код получает случайный файл из 1 каталога, но я был озадачен тем, как его распространить на все подкаталоги, я уверен, что один из вас, гуру LINQ, может помочь мне что-то сделать.Получение случайного файла из дерева каталогов
var extensions = new string[] { ".mp3" };
var di = new DirectoryInfo(MusicPath);
var rgFiles = di.GetFiles("*.*")
.Where(f => extensions.Contains(f.Extension.ToLower()));
int fileCount = rgFiles.Count();
if (fileCount > 0)
{
int x = this.Generator.Next(0, fileCount); //Generator is 'Random' object
file = rgFiles.ElementAt(x).FullName;
}
Человек, который был до смешного легко, радуясь спросил я был в середине крафта рекурсивного беспорядок. Благодаря! –
Рад помочь. Я всегда пытаюсь решить, используя Directory/File, а не DirectoryInfo/FileInfo. – Kane
+1, и это также самое быстрое. Я попробовал Directory.EnumerateFiles (путь, шаблон, SearchOption.AllDirectories) .Skip (random.Next (0, fileCount) .First(), но, по-видимому, единственный способ найти .NET fileCount - подсчитать результат GetFiles :) – Martheen