Programmieren - alles kontrollieren 4.936 Themen, 20.625 Beiträge

Verzeichnisse unter microsoft c++ 5.0 lesen

ich-esel / 2 Antworten / Flachansicht Nickles

Ich möchte aus übungszwecken mir mein eigenes backup Programm schreiben bekomme es aber nicht hin verzeichenisse zu lesen. Mit welchem befehl muss ich öffenen und dann lesen


   Danke

bei Antwort benachrichtigen
mr.escape ich-esel „Verzeichnisse unter microsoft c++ 5.0 lesen“
Optionen

mit:

HANDLE FindFirstFile(

LPCTSTR lpFileName, // file name
LPWIN32_FIND_DATA lpFindFileData // data buffer
);

BOOL FindNextFile(
HANDLE hFindFile, // search handle
LPWIN32_FIND_DATA lpFindFileData // data buffer
);

BOOL FindClose(
HANDLE hFindFile // file search handle
);


ungefähr so:
BOOL recurse;


void scandir(char *path){
WIN32_FIND_DATA fd;
HANDLE hFind;
BOOL bMore;
char path_buffer[_MAX_PATH];

strcpy(path_buffer, path);
strcat(path_buffer, "*.*");
hFind=FindFirstFile(path_buffer,&fd);
bMore = (hFind != (HANDLE) -1);
while(bMore) {
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {//found subdir
if(recurse && fd.cFileName[0]!='.') {// recurse but not "." or ".."
strcpy(path_buffer, path);
strcat(path_buffer, (char *)&fd.cFileName);
strcat(path_buffer,"\\");
scandir(path_buffer);//recurse
}
} else {//found file
//do something to fd.cFileName
}
bMore = FindNextFile(hFind, &fd);
}
FindClose(hFind);
}

wobei recurse angibt, ob rekursion erfolgen soll oder nicht (bedingung ist aber nicht schön implementier, denn alle verzeichnisse, die mit '.' beginnen werden ignoriert).
Der aufruf ist scandir(startpfad)

mr.escape
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen