Dateien in eien Ordner Zählen



  • Kennt jemand eine Möglichkeit die Anzahl aller Dateien eines Ordners und dessen Unterordner zu ermitteln.
    Natürlich ginge das mit FindFirst. Aber dieses dauert einfach zu lange bei Festplatten mit 30000 Dateien. Wenn man auf einen Ordner mit der Rechten Maustaste klickt und dann Eigenschaften wählt, dann kann man sehen wie Windows die Dateien und dessen Gesamtgröße relativ schnell zählt.
    Ich benötige etwas was genauso schnell ist, die Dateigröße benötige Ich nicht.

    Kann mir da jemand weiterhelfen?

    Mfg
    AIGE



  • Ich nehme an, dass Windows das auch über FindFirst & Co. macht - zeig mal deinen Code, evtl. ist der zu umständlich 🙄



  • Hier mein Code. Aber das Problem hat sich schon von selbst gelöst. Als Ich das Programm zum erstmal ausgeführt hatte dauerte es einige Minuten, beim nächsten mal nur noch ne sekunde. Ich denke das liegt daran das Windows bei mir viele Datei komprimiert hat.

    int GetFileCountFrom(char* path)
    {
    	HANDLE search;
    	WIN32_FIND_DATA File;
    	char buf[MAX_PATH];
    	int FileCount = 0;
    
    	sprintf(buf, "%s\\*.*", path);
    
    	search = FindFirstFile(buf, &File);
    
    	if(search == INVALID_HANDLE_VALUE)
    		return -1;
    
    	do
    	{
    		// . und .. nicht verwenden
    		if(File.cFileName[0] != '.')
    		{
    			// Wenn verzeichnis dann nochmal rekursiv aufrufen
    			if((File.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
    			{
    				sprintf(buf, "%s\\%s", path, File.cFileName);
    				FileCount = FileCount + GetFileCountFrom(buf);
    			}
    			else
    			{
    				FileCount ++;
    			}
    		}
    	}while(FindNextFile(search, &File));
    	FindClose(search);
    
    	return count;
    }
    

Anmelden zum Antworten