[update] Dateigröße aus Verzeichnis ermitteln



  • Hab mir mal diesen Code Schnipsel angeschaut:

    HANDLE fHandle;
    WIN32_FIND_DATA wfd;
    
    fHandle=FindFirstFile("C:\\*",&wfd);
    
    do
    {
        // Eintrag nur behandeln, wenn es nicht . oder .. ist (werden nur bei Unterverzeichnissen mit zurückgeliefert)
        // hier könnte man z.B. auch mit lstrcmp auf . und .. vergleichen, was allerdings nicht ganz so effizient ist
        if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) ))
        {
            if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            {
                MessageBox(0,wfd.cFileName,"Folgendes Verzeichnis wurde gefunden:",0);
                // 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);
            }
        }
    }
    while (FindNextFile(fHandle,&wfd));
    FindClose(fHandle);
    

    Wie kann ich die Größe der Dateien ermitteln, z.B. tes.doc = 23 KB



  • habs damit versucht:

    string datei = wfd.cFileName;
    std::ifstream file(datei.c_str());
    file.seekg(0,std::ios::end);
    

    bekomme immer eine -1 😞



  • Du musst dir wieder den Pfad zusammensetzen, dann kannst du z.B. CreateFile/GetFileSize verwenden 🙂



  • hola

    in der WIN32_FIND_DATA struktur ist doch die dateigroesse schon drinnen. oder hab ich da die fragestellung falsch verstanden ?

    Meep Meep



  • Könnt ihr mir bitte ein Beispiel zeigen, den Code hab ich aus der FAQ



  • Meep Meep schrieb:

    hola

    in der WIN32_FIND_DATA struktur ist doch die dateigroesse schon drinnen. oder hab ich da die fragestellung falsch verstanden ?

    Meep Meep

    LOL das hab ich mir auch gedacht als ich den Thread durchlase. 😕

    Kernel64 :
    DWORD nFileSizeHigh;
    DWORD nFileSizeLow;

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/win32_find_data_str.asp


Anmelden zum Antworten