Я видел несколько примеров, но пока что нет в С#, что лучший способ выбрать случайный файл в каталоге?
В этом конкретном случае я хочу выбрать обои из "C:\wallpapers" каждые 15 минут.
Спасибо.
Я видел несколько примеров, но пока что нет в С#, что лучший способ выбрать случайный файл в каталоге?
В этом конкретном случае я хочу выбрать обои из "C:\wallpapers" каждые 15 минут.
Спасибо.
выберите произвольный файл из каталога
private string getrandomfile2(string path)
{
string file = null;
if (!string.IsNullOrEmpty(path))
{
var extensions = new string[] { ".png", ".jpg", ".gif" };
try
{
var di = new DirectoryInfo(path);
var rgFiles = di.GetFiles("*.*").Where( f => extensions.Contains( f.Extension.ToLower()));
Random R = new Random();
file = rgFiles.ElementAt(R.Next(0,rgFiles.Count())).FullName;
}
// probably should only catch specific exceptions
// throwable by the above methods.
catch {}
}
return file;
}
Получить все файлы в массиве, а затем получить один случайный
var rand = new Random();
var files = Directory.GetFiles("c:\\wallpapers","*.jpg");
return files[rand.Next(files.Length)];
Если вы делаете это для обоев, вы не хотите просто выбирать файл наугад, потому что он не будет казаться случайным для пользователя.
Что делать, если вы выбираете один и тот же три раза подряд? Или чередовать между двумя?
Это "случайный", но пользователям это не нравится.
См. это сообщение о том, как отображать случайные снимки так, как пользователям понравится.
var files = new DirectoryInfo(@"C:\dev").GetFiles();
int index = new Random().Next(0, files.Length);
Console.WriteLine(files[index].Name);
почему не просто:
Используйте Directory.GetFiles(...)
, чтобы получить массив имен файлов и использовать класс Random
для выбора случайного файла.