从目录中选择随机文件
我已经看过一些例子但到目前为止在C#中都没有,在目录下选择随机文件的最佳方法是什么?
在这种特殊情况下,我想每隔15分钟从“C:\ wallpapers”中选择一个壁纸。
谢谢。
获取数组中的所有文件,然后随机检索一个文件
var rand = new Random(); var files = Directory.GetFiles("c:\\wallpapers","*.jpg"); return files[rand.Next(files.Length)];
如果您正在为壁纸执行此操作,则不希望随意选择文件,因为它不会对用户显示为随机。
如果你连续三次选择同一个怎么办? 还是两个之间交替?
这是“随机的”,但用户并不喜欢它。
请参阅此文章,了解如何以用户喜欢的方式显示随机图片 。
从目录中选择随机文件
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 files = new DirectoryInfo(@"C:\dev").GetFiles(); int index = new Random().Next(0, files.Length); Console.WriteLine(files[index].Name);
为什么不呢:
- 将文件放入数组中
- 使用Random类选择0和files.Length之间随机的数字
- 使用随机数作为索引从数组中获取文件
使用Directory.GetFiles(...)
获取文件名数组,并使用Random
类选择随机文件。