Ordnerinhalte auslesen

Ravebaby

Erfahrenes Mitglied
Wie kann man denn den Inhalt von Ordnern ausgeben lassen? Also welche Files im Ordner enthalten sind, oder aber welche Ordner enthalten sind? Hab in der MSDN Library gesucht, aber nichts unter CFile gefunden.
 
Schau doch mal unter FindFirstFile(...) und FindNextFile(...). Ich denke, das ist es, was Du suchst.

Grüße,
jokey2
 
genau das war es. Hab es inzwischen hinbekommen.
Wie bekomm ich nun aber die Directories darunter noch aufgelistet?!
 
mit IsDirectory() kann ich ja prüfen, ob es ein directory ist.
Aber wie geh ich dann da rein um es auch noch zu durchsuchen?!
 
Nun, wenn FindFirstFile(...) oder FindNextFile(...) ein Directory zurückliefert, startest Du einen neuen Lauf mit FindFirstFile(...) und FindNextFile(...) mit dem gefundenen Directory als Filename (mit '\*' angehängt natürlich). Am besten Du schreibst eine Funktion, die sich iterativ selber aufruft, z.B.:
Code:
void IterateDirectory(CString Dirname)
    {
     HANDLE hFile;
      WIN32_FIND_DATA FindData;
      CString SearchName;
      BOOL bOK = TRUE;
    
      // -> hier Ausgabe des Directorynamens
    
      //Suchname zusammensetzen (Wildcard anhängen)
      SearchName = Dirname + CString("\\*");
      //erste Datei suchen
      hFile = FindFirstFile(SearchName,   &FindData);
      while(hFile != INVALID_HANDLE_VALUE)
      {
    	if(FindData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
    	  IterateDirectory(FindData.cFileName);
    	else
    	  // -> hier Ausgabe des Dateinamens
    	if(!FindNextFile(hFile,   &FindData))
    	  hFile = INVALID_HANDLE_VALUE;
      }
       }
So in etwa sollte es gehen, ich habe den Code aber nicht getestet. Ich hoffe, ich habe nicht allzuviele Bugs drin. ;-)

jokey2
 
Zurück