2010-03-28 6 views
0

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

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

'Возвращение«C: \\ Windows, \\ System32»;'. Должно быть достаточно случайным. Серьезно, хотя, больше информации? Каким случайным вы это хотите? Я предполагаю, что вы не хотите перечислять все папки на компьютере пользователя и возвращать случайный из этого списка, поскольку это займет много времени (даже если вы ограничиваете поиск на C: \, он все равно может взять много времени). Достаточно ли случайная системная папка? – IVlad

+1

Зачем вам нужна случайная папка? ** SpectateSwamp, это вы ?? ** Вы портируете SSDS на .NET !? – Aaronaught

ответ

4

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

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]; 
8

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

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

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

+0

+1 для 'Random.Next'. -1 для справки xkcd. – Aaronaught

+0

Кто-то думал об этом раньше? –

+0

http://xkcd.com/221/ – Guffa

1

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

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

Я использую этот код, чтобы получить случайную папку из вложенных папок дерева заданной корневой папки

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