login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Directory inhoud inlezen in een multidimensionale array (Opgelost)

Offline Martijn2008 - 17/02/2011 15:49
Avatar van Martijn2008PHP beginner Hallo allemaal,

Graag zou ik een directory willen uitlezen en de inhoud van deze directory in een multidimensionale array willen plaatsen. Indien de directory subdirectories bevat moeten deze in de multidimensionale array worden meegenomen. Momenteel heb ik de volgende opzet.

  1. public void GetDirectories(string path)
  2. {
  3. DirectoryInfo[] dirInfo = new DirectoryInfo(path).GetDirectories();
  4. string[] content;
  5. foreach (DirectoryInfo key in dirInfo)
  6. {
  7. content[key.Name] = Directory.GetFiles(path + key.Name + @"\", "*.jpg");
  8. }
  9. }


Weet iemand misschien hoe de juiste code is?

Dank alvast!

Martijn

1 antwoord

Gesponsorde links
Offline Abbas - 17/02/2011 17:34 (laatste wijziging 17/02/2011 17:34)
Avatar van Abbas Gouden medaille

Crew .NET
Er staat al zeker een fout in je code, er ontbreekt een '\' tussen path en key.Name. Maak gewoon gebruik van key.FullName en je hebt 'path' niet meer nodig. Waarom werk je niet met een Dictionary? Als Key gebruik je dan de naam van de Directory en als Value gebruik je een List van strings met de bestandsnamen. Voorbeeld:

  1. public void GetDirectories(String path)
  2. {
  3. var dirInfo = new DirectoryInfo(path).GetDirectories();
  4. var dirDict = new Dictionary<String, List<String>>();
  5. foreach (var key in dirInfo)
  6. {
  7. dirDict.Add(key.Name, Directory.GetFiles(key.FullName + @"\", "*.jpg").ToList());
  8. }
  9. }

Of korter gemaakt met LinQ:

  1. public void GetDirectories(String path)
  2. {
  3. var dirInfo = new DirectoryInfo(path).GetDirectories();
  4. var dirDict = dirInfo.ToDictionary(key => key.Name, key => Directory.GetFiles(key.FullName + @"\", "*.jpg").ToList());
  5. }

Let wel, deze code zal maar 1 level diep gaan kijken. Als je dus een map hebt met daarin een submap en daar staan jpg-bestanden in, die zullen niet toegevoegd worden. Als je dit wil, en dan ook ineens dynamisch, zal je een recursieve methode moeten schrijven die alle mappen doorzoekt. Maar dat maakt het al wat complexer. Voor 1 level diep zoeken is de code die ik gaf normaal voldoende! 
Bedankt door: Martijn2008
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.176s