如何删除一个文件夹?
在Broland C++中如何删除一个文件夹? 问题点数:20、回复次数:7Top
1 楼LngDotin(水拍云)回复于 2006-03-15 15:37:51 得分 0
RemoveDir
删除指定的目录,如果操作成功,返回真,否则返回假,函数原型如下:
bool __fastcall RemoveDir(const AnsiString Dir);Top
2 楼moudy(勇士(绝对盗版))回复于 2006-03-15 15:38:12 得分 0
先删除里面的文件,再删文件夹~~~Top
3 楼qwx2000(weiwei)回复于 2006-03-15 15:57:12 得分 0
如何删除一个文件夹内的所有文件?Top
4 楼yz20050510(小)回复于 2006-03-15 17:02:02 得分 0
bcb中应该可以直接清楚文件夹中的所有文件,参考一下帮助信息Top
5 楼XBox360(菜)(鸟)回复于 2006-03-15 18:15:28 得分 20
用递归来做,先删除文件夹里面的文件,然后删除空文件夹!
bool DeleteDirectoryEx(const AnsiString &P)
{
if(P.IsEmpty() || P.Length()<4)
return false; // 参数长度必须大于3,即不能为磁盘根目录或空白
int len=P.Length();
char *Path=P.c_str();
AnsiString Dir=Path;
if(Path[len-1]!='\\')
Dir=Dir+'\\';
AnsiString Files=Dir + "*.*";
WIN32_FIND_DATA wfd;
HANDLE hFind=FindFirstFile(Files.c_str(),&wfd);
bool Ret=true;
AnsiString Tmp;
if (hFind!=INVALID_HANDLE_VALUE)
{
bool bFind=true;
while (bFind)
{
if(wfd.cFileName[0]!='.') // . ..
{
Tmp = Dir + wfd.cFileName;
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{ // 递归删除所有子目录
Ret = Ret && DeleteDirectoryEx(Tmp.c_str());
}
else
{ // 删除所有文件
// 属性设置为Normal
SetFileAttributes(Tmp.c_str(),FILE_ATTRIBUTE_NORMAL);
Ret = Ret && DeleteFile(Tmp.c_str());
}
}
bFind = FindNextFile(hFind,&wfd);
}
FindClose(hFind);
}
if (Ret)
return RemoveDirectory(Path);
return false;
}Top
6 楼linkboy2004(linkboy)回复于 2006-03-16 08:42:19 得分 0
RemoveDir
删除指定的目录,如果操作成功,返回真,否则返回假,函数原型如下:
bool __fastcall RemoveDir(const AnsiString Dir);
直接删除文件和文件夹的!!Top
7 楼xiaobubu()回复于 2006-03-24 17:55:19 得分 0
应该是递归算法的,先删除里面的文件和文件夹,最后RemoveDir();Top




