您的位置:首页 > 编程语言 > C语言/C++

文件夹遍历代码C++(win32平台)

2008-11-10 20:43 393 查看
最近有时间,继续学习C++,写了一段遍历文件夹的代码。拿出来希望大家指教。void Common::File::ReadFiles(const wstring &directory,const wstring & extentions, void (* fileMethod)(const wstring &))
{
    WIN32_FIND_DATA findData;
    ZeroMemory(&findData,sizeof(findData));//对findData进行初始化
    
    wstring findFileName(directory);
    wstring fullDirectoryName(directory);
    if(directory[directory.length() - 1] == '//')
    {
        findFileName +=  extentions;
        fullDirectoryName = directory;
    }
    else
    {
        findFileName += L'//' + extentions;
        fullDirectoryName += L'//';
    }

    HANDLE hFind = FindFirstFile(findFileName.c_str(), &findData);

        if(hFind == INVALID_HANDLE_VALUE)
            return;
        
        FindNextFile(hFind,&findData);

        vector<wstring> dirList;
        while(FindNextFile(hFind,&findData))
        {
            if((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
            {
                dirList.push_back(fullDirectoryName + findData.cFileName);
            }
            else

            {
                wstring fullFileName(fullDirectoryName + findData.cFileName);
                fileMethod(fullFileName);//对遍历文件做些什么
            }
        }
   

    for(vector<wstring>::iterator iter = dirList.begin();
        iter != dirList.end(); ++ iter)
    {
        ReadFiles(*iter,extentions,fileMethod);
    }
}

在这段代码中,我使用了一个函数指针来处理遍历文件后应该做什么。C++的函数指针的声明方式真是太棒了,如果能够再支持向lambda表达式的写法,那实在是太完美了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: