Как мне получить путь к случайной папке? - PullRequest
0 голосов
/ 28 марта 2010

Как начать с c: \ (или каков главный диск), а затем случайным образом выбирать маршруты? Даже не уверен, как это сделать.

public sealed static class FolderHelper
{
    public static string GetRandomFolder()
    {
        // do work
    }
}

Ответы [ 4 ]

8 голосов
/ 28 марта 2010

Я бросил кубик и придумал ответ:

  public static string GetRandomFolder()
    {
        return "4";
    }

Или вы можете использовать Random.Next ().

4 голосов
/ 28 марта 2010

Попробуйте получить список всех папок в каталоге, затем сгенерируйте случайное число до количества папок, затем выберите папку, которая относится к вашему случайному числу.

System.IO.DirectoryInfo[] subDirs;
System.IO.DirectoryInfo root;
// assign the value of your root here
subDirs = root.GetDirectories();
Random random = new Random();
int directory = random.Next(subDirs.Length);
System.IO.DirectoryInfo randomDirectory = subDirs[directory];
1 голос
/ 28 марта 2010

Прежде всего вам нужно что-то выбрать, например, все подкаталоги в каталоге, поэтому вам нужно указать этот родительский каталог. Тогда вы просто получаете каталоги и выбираете один случайным образом:

public static string GetRandomFolder() {
  string parentFolder = @"c:\some\folder\somewhere";
  string[] folders = Directory.GetDirectories(parentFolder);
  Random rnd = new Random();
  return folders[rnd.Next(folders.Length)];
}

Если вы собираетесь делать это более одного раза, вам следует рассмотреть возможность создания его класса, чтобы вы могли читать в папках и создавать генератор случайных чисел и сохранять в классе при создании экземпляра класса, а затем просто используйте их в методе.

0 голосов
/ 20 октября 2016

Я использую этот код для получения случайной папки из дерева подпапок данной корневой папки

private string GetRandomFolder(string root)
{
  var rnd = new Random();
  var path = root;
  var depth = rnd.Next(0, 7);

  for (int i = 0; i < depth; i++)
  {
    path = this.GetRandomFolder(path);
    if (path == "")
      break;
  }

  return output;
}
private string GetRandomSubFolder(string root)
{
  var di = new DirectoryInfo(root);
  var dirs = di.GetDirectories();
  var rnd = new Random();

  if (dirs.Length == 0)
    return "";

  return dirs[rnd.Next(0, dirs.Length - 1)].FullName;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...