从目录中选择随机文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从目录中选择随机文件相关的知识,希望对你有一定的参考价值。
我已经看过一些例子但到目前为止在C#中都没有,在目录下选择随机文件的最佳方法是什么?
在这种特殊情况下,我想每15分钟左右从“C: wallpapers”中选择一个壁纸。
谢谢。
答案
获取数组中的所有文件,然后随机检索一个文件
var rand = new Random();
var files = Directory.GetFiles("c:\wallpapers","*.jpg");
return files[rand.Next(files.Length)];
另一答案
如果您正在为壁纸执行此操作,则不希望随意选择文件,因为它不会对用户显示为随机。
如果你连续三次选择同一个怎么办?还是两个之间交替?
这是“随机的”,但用户并不喜欢它。
看到这篇文章关于如何display random pictures in a way users will like。
另一答案
select random file from directory
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
类选择随机文件。
另一答案
只是我的5美分,mvc操作的代码,使用cookie,所以我们不重复相同的文件名两次:
[AllowAnonymous]
//-------------------------------------------------------------
public async Task<ActionResult> RandomBackground()
//-------------------------------------------------------------
{
var basePath = "~/Content/images/backgrounds";
var dir = System.Web.Hosting.HostingEnvironment.MapPath(basePath);
var rand = new Random();
var files = System.IO.Directory.GetFiles(dir, "*.jpg");
if (files!=null)
{
var cookie = "Background";
var pickedFile = "";
var fileName = "";
var oldFilename = "";
while ((oldFilename == fileName) && files.Count<string>()>1)
{
oldFilename = ReadControllerCookie(cookie);
pickedFile = files[rand.Next(files.Length)];
fileName = System.IO.Path.GetFileName(pickedFile);
}
SaveControllerCookie(cookie, fileName);
return Content(fileName);
}
return new EmptyResult();
}
用作:
<img src="~/Content/images/backgrounds/@html.Action("RandomBackground", "YourControllerName")">
以上是关于从目录中选择随机文件的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段
Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段