Kurze Frage zu FindNextFile
-
WIN32_FIND_DATA data; HANDLE hFind; LPCTSTR FileName="*" ; bool ret; hFind = FindFirstFile( FileName , &data); do { cout<<data.cFileName<<endl; } while ( FindNextFile( hFind, &data) != 0 ); FindClose(hFind) ;
Ausgabe:
.
..
File1.obj
Project1.#00
Project1.exe
Project1.map
Project1.pch
Project1.tdsWenn ich jetzt nur die Dateinamen ausgeben bekommen möchte und nicht die Punkte ( . und .. ) ist das ok wenn ich dann strcmp aufrufe? Oder kann man das noch besser lösen?
if ( strcmp(data.cFileName,".") && strcmp(data.cFileName,"..")) { cout<<data.cFileName<<endl; }
-
Wenn ich jetzt nur die Dateinamen ausgeben bekommen möchte und nicht die Punkte ( . und .. ) ist das ok wenn ich dann strcmp aufrufe?
Ja, das ist ok.
-
Warum nutzt Du nicht die Infos aus data?
data ist vom Typ
typedef struct _WIN32_FIND_DATA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; TCHAR cFileName[MAX_PATH]; TCHAR cAlternateFileName[14]; } WIN32_FIND_DATA, *PWIN32_FIND_DATA, *LPWIN32_FIND_DATA;
Ist dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY dann verwirfst Du denn Eintrag.
Etwa soif ( data.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY ) { cout<<data.cFileName<<endl; }
-
1. ist der Dateiname (. oder ..) eine Information aus data
2. sollen ja vielleicht alle anderen Directories angezeigt werden?!
-
FILE_ATTRIBUTE_DIRECTORY ist doch nur ein Flag, wenn, per
if(!(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
.
Aber die Ordnernamen will der TE doch vielleicht auch ausgeben bzw. speichern, von daher strcmp oder wie im FAQ-Beitrag .
-
stimmt ist ein Flag ebenso das es noch andere Directories geben kann.
daneben.