De récupérer tous les fichiers dans un tableau et ensuite récupérer un au hasard
var rand =newRandom();var files =Directory.GetFiles("c:\\wallpapers","*.jpg");return files[rand.Next(files.Length)];
J'ai essayé ce bout de code et sa fonctionne bien, mais c'est seulement à la recherche dans le dossier de fonds d'écran et pas à la recherche d'éventuels sous-dossiers à l'intérieur de fonds d'écran. Comment modifier le code pour le faire ainsi? Envisager l'adoption d'SearchOption.AllDirectories comme troisième argument de la méthode GetFiles.
Si vous ne le faites pas pour les papiers, vous ne souhaitez pas il suffit de sélectionner un fichier au hasard, car il ne semble pas aléatoire de l'utilisateur.
Que si vous choisissez le même trois fois dans une rangée? Ou alterner entre les deux?
C'est "aléatoire", mais les utilisateurs ne l'aime pas.
Quand brassage, vous devriez sans doute aussi en compte le cas d'un fichier est supprimé ou ajouté à l'annuaire (dans ce cas, vous devez re-shuffle). Grand point, merci pour l'ajout.
privatestring getrandomfile2(string path){string file =null;if(!string.IsNullOrEmpty(path)){var extensions =newstring[]{".png",".jpg",".gif"};try{var di =newDirectoryInfo(path);var rgFiles = di.GetFiles("*.*").Where( f => extensions.Contains( f.Extension.ToLower()));Random R =newRandom();
file = rgFiles.ElementAt(R.Next(0,rgFiles.Count())).FullName;}//probably should only catch specific exceptions//throwable by the above methods.catch{}}return file;}
Attraper les exceptions et silencieusement les ignorer, c'est mauvais. Vous devez gérer l'exception et retour quelque chose d'utile, ou de ne pas les attraper.
De récupérer tous les fichiers dans un tableau et ensuite récupérer un au hasard
Envisager l'adoption d'SearchOption.AllDirectories comme troisième argument de la méthode GetFiles.
OriginalL'auteur Mouk
Si vous ne le faites pas pour les papiers, vous ne souhaitez pas il suffit de sélectionner un fichier au hasard, car il ne semble pas aléatoire de l'utilisateur.
Que si vous choisissez le même trois fois dans une rangée? Ou alterner entre les deux?
C'est "aléatoire", mais les utilisateurs ne l'aime pas.
Voir ce post sur la façon de affichage aléatoire des images dans une façon, les utilisateurs comme.
Grand point, merci pour l'ajout.
OriginalL'auteur Jason Cohen
sélectionnez aléatoire de fichier de répertoire
OriginalL'auteur Crash893
OriginalL'auteur Lance Harper
pourquoi ne pas simplement:
OriginalL'auteur leora
Utiliser le
Directory.GetFiles(...)
pour obtenir le tableau des fichiers et utiliser leRandom
classe de sélectionner au hasard un fichier.OriginalL'auteur Daniel A. White