/ / wybierz losowy plik z katalogu - c #, .net, file, random

wybierz losowy plik z katalogu - c #, .net, plik losowy

Widziałem kilka przykładów, ale jak dotąd w C #, jaki jest najlepszy sposób na wybranie losowego pliku w katalogu?

W tym konkretnym przypadku chcę wybrać tapetę z „C: tapety” co 15 minut.

Dzięki.

Odpowiedzi:

25 dla odpowiedzi № 1

Pobierz wszystkie pliki w tablicy, a następnie pobierz je losowo

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

9 dla odpowiedzi nr 2

Jeśli robisz to dla tapet, nie chcesz po prostu wybierać pliku losowo, ponieważ nie będzie on dla użytkownika losowy.

Co się stanie, jeśli wybierzesz to samo trzy razy z rzędu? Albo na przemian dwa?

To jest „losowe”, ale użytkownicy tego nie lubią.

Zobacz ten post o tym, jak wyświetlać losowe zdjęcia w sposób, jaki będą chcieli użytkownicy.


4 dla odpowiedzi nr 3

wybierz losowy plik z katalogu

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;
}

3 dla odpowiedzi № 4
var files = new DirectoryInfo(@"C:dev").GetFiles();
int index = new Random().Next(0, files.Length);

Console.WriteLine(files[index].Name);

0 dla odpowiedzi № 5

dlaczego nie tylko:

  1. pobierz pliki do tablicy
  2. użyj klasy Losowej, aby wybrać liczbę losową między 0 a files.Length
  3. Chwyć plik z tablicy za pomocą liczby losowej jako indeksu

0 dla odpowiedzi № 6

Użyj Directory.GetFiles(...) aby uzyskać tablicę nazw plików i użyć Random klasa, aby wybrać losowy plik.