最经开发的时候要用到文件系统的一些函数,其中一个就是如何删除一个目录下的所有文件.
下面试代码,BOOL bRemoveDir 代表是否移除根目录,也就是传进去的目录,如果传进去的目录是移动磁盘的根目录,那么移除会失败,要设置为FASLE.
删除文件以及目录除了可以调用系统的快速格式化删除所有文件,
我这种就是递归的找到每个文件,然后删除文件,移除目录。
BOOL DeleteDirectory(CString DirName,BOOL bRemoveRootDir)
{
CFileFind tempFind;
CString csZRootDir;
csZRootDir.Format("%s\\*.*",DirName.GetBuffer(0));
BOOL IsFinded=(BOOL)tempFind.FindFile(csZRootDir.GetBuffer(0));
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
CString csFileName;
csFileName.Format("%s",tempFind.GetFileName().GetBuffer(0));
if(tempFind.IsDirectory())
{
CString tmp;
tmp.Format("%s\\%s",DirName.GetBuffer(0),csFileName.GetBuffer(0));
DeleteDirectory(tmp,TRUE);
}
else
{
CString tmp;
tmp.Format("%s\\%s",DirName,csFileName.GetBuffer(0));
DeleteFile(tmp.GetBuffer(0));
}
}
}
tempFind.Close();
if (bRemoveRootDir)
{
if(!RemoveDirectory(DirName))
{
LogRecord(TRUE,_T("remove directory failed! %s \r\n"),DirName);
return FALSE;
}
}
return TRUE;
}