Navigation in den Verzeichnissen unter Windows (2000, XP, Vista)


Um Dateien stapelweise oder nach bestimmten Kriterien abarbeiten zu können, verwendet man dazu die Funktionen FindFirstFile und FindNextFile.
Die Attribute der damit gefundenen Dateien bzw. Verzeichnisse können mittels der WIN32_FIND_DATA Struktur abgefragt werden.

Das folgende Programm soll als Vorlage dienen und verdeutlicht den Einsatz.

#include <iostream>
#include <string>
#include <windows.h> //Benötigter Header

using std::cin;
using std::cout;
using std::string;
using std::endl;

int main()
{
    string path;
    cout << "Pfad fuer das zu durchsuchende Verzeichnis eingeben: " << endl;
    getline(cin, path);
    path = path + "\\*";

    // Beginn der Navigation in den Verzeichnissen
    HANDLE FileHandle;
    WIN32_FIND_DATA wfd;
    FileHandle = FindFirstFile(path.c_str(),&wfd);

    do
    {
        // In jedem Ordner existieren die Navigationsverzecihnisse '.' und '..'
        // Eintrag nur behandeln, wenn es nicht '.' oder '..' ist
        if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) ))
        {
            // Z. B. auf Verzeichnisse untersuchen
            if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            {              
                cout << "Verzeichnis: " << wfd.cFileName << endl;

                // Hier könnte man dasselbe nochmal machen, um auch die
                // Unterverzeichnisse zu scannen
            }
        }
    }
    while (FindNextFile(FileHandle,&wfd));
    FindClose(FileHandle);

    return 0;
}


Die Ausgabe sind die Unterverzeichnisse für den angegebenen Pfad.


Für den Fall, dass dieses Programm unter MS Visual Studio kompiliert werden soll, muss der Zeichensatz als "Nicht festgelgt" eingestellt werden.
Projekt > Eigenschaften > Konfigurationseigenschaftn > Allgemein > Zeichensatz


Quelle





Siehe auch C

There are no comments on this page. [Add comment]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki