昨天头要我写一段递归删除文件夹的代码。 记下来,以后方便用.
bool __fastcall TForm1::DeleteFolder(AnsiString sourceDir)
{
TSearchRec sr;
AnsiString strDir;
AnsiString strFile;
int Attr = 0;
Attr|=faAnyFile;
if(sourceDir == "")
return FALSE;
if(!DirectoryExists(sourceDir))
return FALSE;
// 统一sourceDir的最后一个字符为 if(sourceDir[sourceDir.Length()] != '//')
sourceDir = sourceDir + "//";
if(FindFirst(sourceDir+"//*.*",Attr,sr)==0)
{
try
{
do {
if(sr.Name == "." || sr.Name == "..")
continue;
if(sr.Attr == faDirectory)
{// 是目录就递归删除,然后删除当前文件夹
DeleteFolder(sourceDir+sr.Name);
RemoveDir(sourceDir+sr.Name);
}
else
{// 是文件就删除文件
strFile=sourceDir+sr.Name;
DeleteFile(strFile);
}
}while(FindNext(sr)== 0);
FindClose(sr);
}
catch(Exception &e)
{
FindClose(sr);
}
}
return TRUE;
}
bool __fastcall TForm1::DeleteFolder(AnsiString sourceDir)
{
TSearchRec sr;
AnsiString strDir;
AnsiString strFile;
int Attr = 0;
Attr|=faAnyFile;
if(sourceDir == "")
return FALSE;
if(!DirectoryExists(sourceDir))
return FALSE;
// 统一sourceDir的最后一个字符为 if(sourceDir[sourceDir.Length()] != '//')
sourceDir = sourceDir + "//";
if(FindFirst(sourceDir+"//*.*",Attr,sr)==0)
{
try
{
do {
if(sr.Name == "." || sr.Name == "..")
continue;
if(sr.Attr == faDirectory)
{// 是目录就递归删除,然后删除当前文件夹
DeleteFolder(sourceDir+sr.Name);
RemoveDir(sourceDir+sr.Name);
}
else
{// 是文件就删除文件
strFile=sourceDir+sr.Name;
DeleteFile(strFile);
}
}while(FindNext(sr)== 0);
FindClose(sr);
}
catch(Exception &e)
{
FindClose(sr);
}
}
return TRUE;
}