Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C# Náhodná složka č.2

Zdravím,

Nevěděl by někdo jak upravit kód:

string folder;

string DirFolder = @"C:\Users\(jméno)\Desktop";
string[] Folder = Directory.GetDirectories(DirFolder);
folder = (Folder[random.Next(Folder.Length)]);

tak, aby fungoval dokud nedojde nakonec indexu ? Kód funguje tak, že náhodně vybere složku z: (C:\Users\(název)\Desktop) a adresu uloží do stringu s názvem folder.
Jenomže abych nevypisoval tenhle příkaz např. stokrát, chtěl bych, aby kód fungoval dokud nedojde nakonec (např. (C:\Users\(název)\Desktop\Složka 1\Složka 2\Složka 3\Složka 4)

Děkuji

Předmět Autor Datum
Asi jsem nepochopil, čeho chceš dosáhnout.
Wikan 09.10.2018 18:25
Wikan
Už jsem tady psal hodněkrát, jednoduše řečeno, mám složku a v ni dalších 100 šložek a v těch složkác…
User9595 09.10.2018 18:28
User9595
Fakt netuším, kolikrát a co jsi tu psal. string[] Folder = Directory.GetDirectories(DirFolder, "*",…
Wikan 09.10.2018 18:32
Wikan
Zlé to vysvětluju, je to složitější, na ploše mám složku (Složka č.1), v ní jsou dvě složky (další S…
User9595 09.10.2018 18:32
User9595
celkom nerozumim čo chcete dosiahnuť, ale nestačil by while cyklus s podmienkou ktorou overujete či…
Mlocik97 09.10.2018 18:46
Mlocik97
Ano, to bude ono, když kod pustím někdy mi ukazuje že Index je mimo hranice pole, nevím jak tuto pod…
User9595 09.10.2018 18:52
User9595
Ten můj kód jsi už zkoušel?
Wikan 09.10.2018 18:56
Wikan
Ano, ale potřeboval bych ať vždy dojde až na konec Indexu pole, vždy ať vybere poslední možnou šložk…
User9595 09.10.2018 18:58
User9595
Takže nezkoušel.
Wikan 09.10.2018 18:59
Wikan
Ano, generuje nahodne šložky, ale né vždy uplně ty poslední
User9595 09.10.2018 19:01
User9595
Ne úplně ty poslední v (indexu)
User9595 09.10.2018 19:02
User9595
Čemu říkáš index? Radši nepoužívej pojmy, kterým nerozumíš.
Wikan 09.10.2018 19:02
Wikan
Tvůj kód funguje, ale né vždy otevře úplně poslední složku, někdy otevře složku a jsou tam další
User9595 09.10.2018 19:19
User9595
Čili chceš vybrat náhodnou složku, která už neobsahuje další podsložky?
Wikan 09.10.2018 19:23
Wikan
Přesně tak, omlouvám se za vyjadřování
User9595 09.10.2018 19:23
User9595
var folders = GetLeafFolders(DirFolder); Console.WriteLine(folders[random.Next(folders.Count)]); Lis…
Wikan 09.10.2018 19:33
Wikan
"An object reference is required for the non-static field, method, or property 'ConsoleApplication1.…
User9595 09.10.2018 20:27
User9595
static List<string> GetLeafFolders(string topFolder) ...
Wikan 09.10.2018 20:30
Wikan
A zkoušel si to ? To je čístě na konzolovou aplikaci že ? Konzole zmizí a nic
User9595 09.10.2018 20:38
User9595
Tak si na konec dej: Console.ReadKey();
Wikan 09.10.2018 20:41
Wikan
Musíš mít strašne nervy, je to jako z děckem, ale ten příkaz mi to nevezme a dávám to správně na kon…
User9595 09.10.2018 20:43
User9595
Už to jede, děkuji za trpělivost poslední
User9595 09.10.2018 20:44
User9595

Už jsem tady psal hodněkrát, jednoduše řečeno, mám složku a v ni dalších 100 šložek a v těch složkách další složky a pořád dokola, v některých je více složek + podsložek v některých méně, chci aby generator vygeneroval náhodnou šložku dokud nedojde na konec složky (indexu)

Zlé to vysvětluju, je to složitější, na ploše mám složku (Složka č.1), v ní jsou dvě složky (další Složka č.1 + Složka č.2), v nich jsou další a pořád takhle dokola, nevím si rady s kodem, aby fungoval dokud nedojde nakonec kde už žadna další složka není a otevřel by ji

var folders = GetLeafFolders(DirFolder);
Console.WriteLine(folders[random.Next(folders.Count)]);

List<string> GetLeafFolders(string topFolder)
{
	var result = new List<string>();
	
	var subFolders = Directory.GetDirectories(topFolder);
	
	if (subFolders.Length == 0)
	{
		result.Add(topFolder);
		return result;
	}
	
	foreach (var folder in subFolders)
	{
		result.AddRange(GetLeafFolders(folder));
	}
	return result;
}

Zpět do poradny Odpovědět na původní otázku Nahoru