递归删除文件夹目录下所有文件

bool DeleteDirectory(CString& DirName)
{
     // 匹配格式为*.*,即该目录下的所有文件
    CString szDeletePath;
    szDeletePath.Format(_T("%s//*.*"), DirName);

    WIN32_FIND_DATA FindFileData;
    ZeroMemory(&FindFileData, sizeof(WIN32_FIND_DATA));

    HANDLE hFile = FindFirstFile(szDeletePath, &FindFileData);
    do
    {
        // 排除'.'目录和'..'目录
        if (0 == _tcscmp(FindFileData.cFileName, _T(".")) || 0 == _tcscmp(FindFileData.cFileName, _T("..")))
        {
            continue;
        }

        CString strFileName;
        strFileName.Format(_T("%s//%s"), DirName, FindFileData.cFileName);

        if( IsDirectory(strFileName)) //如果是目录,则递归地调用
        {
            DeleteDirectory(strFileName);
        }
        else
        {
            DeleteFile(strFileName);
        }
    }
    while(FindNextFile(hFile, &FindFileData));
    FindClose(hFile);

    RemoveDirectory(DirName);
    return true;
}

猜你喜欢

转载自blog.csdn.net/wizardtoh/article/details/50325903