#include <windows.h>
#include <tchar.h>
#include <string>
using namespace std;
BOOL DeleteDirectory(LPCTSTR strDes)
{
//删除目标目录下的所有文件
WIN32_FIND_DATA FileData;
HANDLE hSearch ;
BOOL bFinished=FALSE;
wstring strTemp;
strTemp = strDes;
strTemp +=_T( "//*.*");
hSearch = FindFirstFile( strTemp.c_str(),&FileData );
if (hSearch == INVALID_HANDLE_VALUE)
{
bFinished=TRUE; //该目录下没有文件
}
while( !bFinished )
{
strTemp = strDes;
strTemp = strTemp + _T( "//") + FileData.cFileName;
if ((_tcscmp(FileData.cFileName, _T(".")) != 0) && (_tcscmp(FileData.cFileName, _T("..")) != 0))
{
//是目录就进入递归调用
if( FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
{
DeleteDirectory(strTemp.c_str());
}
else
{//是文件则删除
DeleteFile( strTemp.c_str() );
}
}
bFinished = FindNextFile(hSearch,&FileData) ? FALSE : TRUE;
}
FindClose( hSearch );
//删除空目录
RemoveDirectory( strDes );
return TRUE;
}
BOOL deleteDirectory(LPCTSTR pszDir)
{
WIN32_FIND_DATA fd;
TCHAR szTempFileFind[MAX_PATH] = {0};
BOOL bIsFinish = FALSE;
ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));
swprintf_s(szTempFileFind, _T("%s//*.* "), pszDir);
HANDLE hFind = FindFirstFile(szTempFileFind, &fd);
if (hFind == INVALID_HANDLE_VALUE)
{
return false;
}
while (!bIsFinish)
{
if ((_tcscmp(fd.cFileName, _T(".")) != 0) && (_tcscmp(fd.cFileName, _T("..")) != 0))
{
TCHAR szFoundFileName[MAX_PATH] = { 0 };
_tcscpy(szFoundFileName, fd.cFileName);
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
TCHAR szTempDir[MAX_PATH]= { 0 };
swprintf_s(szTempDir, _T("%s//%s"), pszDir, szFoundFileName);
deleteDirectory(szTempDir);
}
else
{
TCHAR szTempFileName[MAX_PATH] = { 0 };
swprintf_s(szTempFileName, _T("%s//%s"), pszDir, szFoundFileName);
DeleteFile(szTempFileName);
}
}
bIsFinish = (FindNextFile(hFind, &fd)) ? FALSE : TRUE;
}
FindClose(hFind);
if (!RemoveDirectory(pszDir))
{
return false;
}
return true;
}
int __cdecl _tmain()
{
DeleteDirectory(_T("F://4SOnline//kit_old"));
}