windows下遍历文件夹:
void TraverseFolder(char path[260], const char *fileExt)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
char curDir[260];
SetCurrentDirectory(path);
hFind = FindFirstFile(fileExt, &FindFileData);
if(hFind==INVALID_HANDLE_VALUE) return;
else {
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
if(FindFileData.cFileName[0] != _T('.')){
SetCurrentDirectory(FindFileData.cFileName);
GetCurrentDirectory(260, curDir);
OnTraverseFolder(curDir);
SetCurrentDirectory(_T(".."));
}
}
else {
GetCurrentDirectory(260, curDir);
strcat(curDir,"\\");
strcat(curDir,FindFileData.cFileName);
// ...这里写上对文件的操作
}
while(FindNextFile(hFind,&FindFileData)){
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){
if(FindFileData.cFileName[0]!= _T('.')){ //文件名不是'.'或'..'时
SetCurrentDirectory(FindFileData.cFileName);
GetCurrentDirectory(260, curDir);
OnTraverseFolder(curDir);
SetCurrentDirectory(_T(".."));
}
}
else{
GetCurrentDirectory(260, curDir);
strcat(curDir,"\\");
strcat(curDir,FindFileData.cFileName);
// ...这里写上对文件的操作
}
}
FindClose(hFind);
}
}
(待续)