Wiki source for CppVerzeichnisNavigation


Show raw source

=====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 [[http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx FindFirstFile]] und [[http://msdn.microsoft.com/en-us/library/aa364428(VS.85).aspx FindNextFile]].
Die Attribute der damit gefundenen Dateien bzw. Verzeichnisse können mittels der [[http://msdn.microsoft.com/en-us/library/aa365740(VS.85).aspx WIN32_FIND_DATA]] Struktur abgefragt werden.

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

%%(cpp)
#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


[[http://www.c-plusplus.de/forum/index.php Quelle]]




----
Siehe auch {{backlinks}}
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki