Ordner und Sub-Ordner
-
Servus ich hab zurzeit ein Probelm mit der Auflistung allerd Dateien in ordner, Sub-Ordner sollen auch durchgangen werden. Genau das ist ja auch des große Problem mit den subordnern, denn ich weiß nich so recht wie ich des anstellen soll. aufjedenfall hatte meine möglichkeit des zu machen nicht so richtig funktioniert. Auf C. sind bbei mir 80 000 Datein, laut dem Counter in meinem Programm werden mit meiner Methode nur 15000 aufgelistet.
Ich hba jetzt hier einen nicht sehr sauberen schönen code von mir , er ist ja auch nur zum ungefährem test meiner methode. Wäre nett wenn ihr euch den mal anschaut. Gut wäre es auch wenn ihr irgendwo noch nen funktionierenden code hättet. thx im voraus.
void SearchDir() { PWIN32_FIND_DATA finddata = new WIN32_FIND_DATA; HANDLE hSearch = NULL; hSearch = FindFirstFile("*",finddata); if(hSearch == INVALID_HANDLE_VALUE) { OutputSystemError(); exit(0); } while(FindNextFile(hSearch,finddata)) { OutputCurrentDir(); printf("\\%s\n",(finddata->cFileName)); ++g_counter; if(finddata->dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY && strcmp(finddata->cFileName,".")!=0 && strcmp(finddata->cFileName,"..")!=0) { char* szOldPath = new char[MAX_PATH]; GetCurrentDirectory(MAX_PATH,szOldPath); SetCurrentDirectory(finddata->cFileName); SearchDir(); SetCurrentDirectory(szOldPath); delete szOldPath; } } }
Das hier in der FAQ hab ich nachträglich noch gefunden, ist fast des gleiche wie ich habe aber genau die stelle wo ich mein problem wurde nicht genauer beschrieben nämlich des mit den unterordnern
HANDLE fHandle; WIN32_FIND_DATA wfd; // Erste Datei im Verzeichnis "c:\windows\desktop\" holen: // aufgrund von "alten Zeiten" ist das erste immer ein "." // kann also ignoriert werden. fHandle=FindFirstFile("c:\\windows\\desktop\\*",&wfd); // Ergebnis Nummer 2 ist auch uninteressant (ist ".."): FindNextFile(fHandle,&wfd); while (FindNextFile(fHandle,&wfd)) { if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { // Datei ist keine, sondern ein Verzeichnis... // Hier könnte man dasselbe nochmal machen, um auch die // Unterverzeichnisse zu scannen ;-) } else { MessageBox(0,wfd.cFileName,"Folgende Datei gefunden:",0); } } FindClose(fHandle);
Kann auch sein dass ich heut wieder voll verplant bin und des nich zambring , wäre aber trotzdem nett wenn ihr mir helfen könntet
[ Dieser Beitrag wurde am 29.04.2003 um 18:51 Uhr von Nitromaus editiert. ]
-
Hmm komisch grad hab ich es nochmal auf nen einzelnen ordner laufen lassen und nicht direkt von c:/ aus und er gibt mir die richtige anzahl an dateien an. hhmm.
LOL ich hab den Fehler er listet keien versteckten Datein auf und anscheinedn hab ich davon am meistem, hmm sehr sehr komisch, nehmen nun am besten FindFirstFileEx her.