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.tds

    Wenn 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 so

    if ( 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.


Anmelden zum Antworten