私はいくつかの例を見たことがありますが、これまでのところC#では何も見ていませんが、ディレクトリの下でランダムなファイルを選択する最良の方法は何ですか?ディレクトリから任意のファイルを選択
このような場合、15分ごとに「C:\ wallpapers」から壁紙を選択します。
ありがとうございました。
私はいくつかの例を見たことがありますが、これまでのところC#では何も見ていませんが、ディレクトリの下でランダムなファイルを選択する最良の方法は何ですか?ディレクトリから任意のファイルを選択
このような場合、15分ごとに「C:\ wallpapers」から壁紙を選択します。
ありがとうございました。
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;
}
アレイ内のすべてのファイルを取得してから1ランダムに取得
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
クラスを使用してランダムファイルを選択します。
壁紙の場合は、ランダムに表示されないため、ランダムに選択する必要はありません。
同じものを3回連続して選ぶとどうなりますか?または2つの間で交替する?
これは「ランダム」ですが、ユーザーは好きではありません。
方法についてのこの記事を参照してください。display random pictures in a way users will like
シャッフル時には、ファイルが削除されたり、ディレクトリに追加された場合も考慮する必要があります(その場合は、再シャッフルする必要があります)。 – Joey
偉大な点、それを追加していただきありがとうございます。 –
例外をキャッチして、それを黙って無視するのは悪いです。あなたは例外を処理して何か有用なものを返すか、まったくそれを捕まえてはいけません。 – Guffa