Festplattenindex erstellen
-
Ich möchte gerne ein Index meiner Externen Festplatte erstellen um zu wissen was (bei letzten überprüfen) drauf war wenn sie mal gerade nicht angeschlossen ist
Momentan sind das etwa 49.090 Dateien und 3.515 Ordner.
Leider beendet sich das Programm einfach ohne Meldung.
Ich hoffe jemand kann mir sgen woran das liegt und wie ich das beheben kann.hier der verwendete Code:
vector<_finddata_t> masterindex; void Rekursion(char *path) { struct _finddata_t c_file; long hFile; char *u_path=(char*)malloc(MAX_PATH); char *oldpath=(char*)malloc(MAX_PATH); getcwd(oldpath,MAX_PATH); chdir(path); strcpy(u_path,path); strcat(u_path,"\\"); char filepath[MAX_PATH]; if( (hFile = _findfirst( "*", &c_file )) == -1L ) { // Nichts gefunden MessageBox(NULL,"Es wurden keine Dateien gefunden.",0,MB_ICONINFORMATION | MB_OK); } else { if (strcmp(c_file.name,".")!=0 && strcmp(c_file.name,"..")!=0) { strcpy(filepath,u_path); strcat(filepath,c_file.name); if ((c_file.attrib & _A_SUBDIR)==_A_SUBDIR) { // Ordner gefunden masterindex.push_back(c_file); Rekursion(filepath); } else { // Datei gefunden masterindex.push_back(c_file); } } // Find the rest of the files while( _findnext( hFile, &c_file ) == 0 ) { if (strcmp(c_file.name,".")!=0 && strcmp(c_file.name,"..")!=0) { strcpy(filepath,u_path); strcat(filepath,c_file.name); if ((c_file.attrib & _A_SUBDIR)==_A_SUBDIR) { // Ordner gefunden masterindex.push_back(c_file); Rekursion(filepath); } else { // Datei gefunden masterindex.push_back(c_file); } } } _findclose(hFile); } chdir(oldpath); free(oldpath); free(u_path); }
-
testen konnte ich deinen code leider nicht, weil ich keine ahnung habe, was für eine seltsame api du benutzt. aber beim überfliegen deines codes ist mir aufgefallen, daß du den pfad in einem statischen c-string der länge MAX_PATH speicherst. MAX_PATH ist nur 256 und definitiv zu kurz! benutze besser einen stl-string.
EDIT
du kannst auch erst mal MAX_PATH durch 4096 oder so ersetzen und testen, ob der fehler dann immer noch auftritt. wenn nein, dann weißt du sicher, daß es daran gelegen hat.