Получение случайного файла из дерева каталогов
Так что я нигде не могу найти хороший пример этого. В этом вопросе я нашел хороший пример выбора случайного файла из каталога, но мне нужно выбрать случайный файл из дерева каталогов (неизвестной глубины). Этот код получает случайный файл из 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;
}
1 ответ
Решение
Попробуй это
var random = new Random(); // this should be placed in a static member variable, but is ok for this example
var fileNames = System.IO.Directory.GetFiles(@"c:\temp", "*.mp3", SearchOption.AllDirectories);
var randomFile = fileNames[random.Next(0, fileNames.Length)];