Ordner Struktur anzeigen
-
HI,
und zwar hab ich mal ne Frage.
Ich würde gerne die komplette Ordnerstruktur anzeigen von Laufwerk c:\mein quellcode sieht wie folgt aus.
void PrintDirectory(char *pPath) { char path[_MAX_PATH]; char nextLevel[_MAX_PATH]; strcpy (path, pPath); strcat (nextLevel, "*.*"); WIN32_FIND_DATA FileData; HANDLE hfind = FindFirstFile(path, &FileData); int FindMoreFiles; int dir = 0; int file = 0; if (hfind != INVALID_HANDLE_VALUE) { do { if (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { cout<< "<Ordner> " << FileData.cFileName << endl <<endl; strcat (FileData.cFileName, "\\"); strcat (path, FileData.cFileName); cout << "testausgabe:" << path << endl; // testausgabe strcpy (nextLevel, path); PrintDirectory(nextLevel); cout << nextLevel << endl; // testausgabe dir++; } else { cout << "<Datei> " << FileData.cFileName << endl; file++; } FindMoreFiles = FindNextFile(hfind,&FileData); } while (FindMoreFiles); } else { cout << "Dieser Datentraeger\\Ordner ist leer." << endl; } FindClose (hfind); cout << endl << "Insgesamt" << endl; cout << "Ordner: "<< dir << endl; cout << "Dateien: "<< file << endl << endl; }und in der Main steht folgendes.
PrintDirectory("c:\\"); cout << "Druecken Sie eine Tasten um ins Menu zu gelangen." << endl; getch ();ausgegeben wird nun immer das.
<Ordner> WINNT testausgabe:c:\*.*blaaa\Dokumente und Einstellungen\HajoDial\Hd_test\Programme\R ECYCLER\SVN_Projekte\SVN_Repos\System Volume Information\Temp\test\WINNT\ Dieser Datentraeger\Ordner ist leer. Insgesamt Ordner: 0 Dateien: 0er hängt also jeden Ordner immer hinten drann.
was ich komisch find is der teil. "."
aber wenn ichs raus mach gehts gar nich.vielen Dank schonmal
-
Du bekommst ja immer nur den Ordnernamen zurückgeliefert. Also musst du dir aus diesem wieder den Pfad zusammensetzen. Hierbei kannst du aber nicht direkt den String von FindFirstFile verwenden, da hier ja noch das * (mit . solltest du nur Sachen bekommen, die auch einen Punkt enthalten, oder
) dranhängt - also entweder den Pfad ohne \* merken, oder eben vor dem zusammensetzen das \* abschneiden 