方法1.c++删除指定文件夹下的所有文件
void DeleteDirectory(CString strPath)
{
CFileFind tempFind;
TCHAR sTempFileFind[MAX_PATH] = { 0 };
wsprintf(sTempFileFind, _T("%s\\*.*"), strPath);
BOOL IsFinded = tempFind.FindFile(sTempFileFind);
while (IsFinded)
{
IsFinded = tempFind.FindNextFile();
if (!tempFind.IsDots())
{
TCHAR sFoundFileName[200] = { 0 };
_tcscpy(sFoundFileName, tempFind.GetFileName().GetBuffer(200));
if (tempFind.IsDirectory())
{
TCHAR sTempDir[200] = { 0 };
wsprintf(sTempDir, _T("%s\\%s"), strPath, sFoundFileName);
DeleteDirectory(sTempDir); //删除文件夹下的文件
RemoveDirectory(sTempDir); //移除空文件
}
else
{
TCHAR sTempFileName[200] = { 0 };
wsprintf(sTempFileName, _T("%s\\%s"), strPath, sFoundFileName);
DeleteFile(sTempFileName);
}
}
}
tempFind.Close();
}
————————————————
版权声明:本文为CSDN博主「11小猪会飞11」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ss33sss/article/details/92771861
方法2.c++删除指定文件夹下的所有文件和文件夹(包括自身)
//清理指定文件夹下所有文件 包括文件目录本身
//[in] const wstring wstDirectory : 要清理的文件目录
//返回值 : 无
void CFunctionCore::RemoveAll(wstring wst)
{
wstring wstCurrentFindPath;
wstCurrentFindPath.assign(wst);
wstCurrentFindPath.append(L"\\*.*");
wstring wstCurrentFile;
WIN32_FIND_DATAW wfd;
HANDLE h = FindFirstFileW(wstCurrentFindPath.c_str(), &wfd);
if(h == INVALID_HANDLE_VALUE)
{
return;
}
do
{
if(lstrcmpW(wfd.cFileName, L".") == 0 ||
lstrcmpW(wfd.cFileName, L"..") == 0)
{
continue;
}
wstCurrentFile.assign(wst);
wstCurrentFile.append(L"\\");
wstCurrentFile.append(wfd.cFileName);
if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
RemoveAll(wstCurrentFile);
}
else
{
DeleteFileW(wstCurrentFile.c_str());
}
}while(FindNextFileW(h, &wfd));
FindClose(h);
RemoveDirectoryW(wst.c_str());
}
————————————————
版权声明:本文为CSDN博主「WNDCLASSEXW」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/WNDCLASSEXW/article/details/86614171