从目录中选择随机文件

Cra*_*893 14 .net c# random file

我已经看过一些例子但到目前为止在C#中都没有,在目录下选择随机文件的最佳方法是什么?

在这种特殊情况下,我想每15分钟左右从"C:\ wallpapers"中选择一个壁纸.

谢谢.

Mou*_*ouk 28

获取数组中的所有文件,然后随机检索一个文件

var rand = new Random();
var files = Directory.GetFiles("c:\\wallpapers","*.jpg");
return files[rand.Next(files.Length)];
Run Code Online (Sandbox Code Playgroud)

  • 考虑将SearchOption.AllDirectories作为第三个参数传递给GetFiles方法. (4认同)

Jas*_*hen 10

如果您正在为壁纸执行此操作,则不希望随意选择文件,因为它不会对用户显示为随机.

如果你连续三次选择同一个怎么办?还是两个之间交替?

这是"随机的",但用户并不喜欢它.

请参阅此文章,了解如何以用户喜欢的方式显示随机图片.


Cra*_*893 6

从目录中选择随机文件

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;
    }
Run Code Online (Sandbox Code Playgroud)


Lan*_*per 5

var files = new DirectoryInfo(@"C:\dev").GetFiles();
int index = new Random().Next(0, files.Length);

Console.WriteLine(files[index].Name);
Run Code Online (Sandbox Code Playgroud)