linux C/C++ 删除某个目录下的所有文件(包括目录本身)
shmiloveyou:
优化了下:
[code=cpp]
// 递归删除
bool myyk::CDir::rmdir(string &dirName)
{
DIR *dir;
struct dirent *dirinfo;
struct stat statbuf;
char filepath[256] = {0};
lstat(dirName.c_str(), &statbuf);
if (S_ISREG(statbuf.st_mode)) // 是否是文件
{
::remove(dirName.c_str());
}
else if (S_ISDIR(statbuf.st_mode)) // 是否是目录
{
if ((dir = ::opendir(dirName.c_str())) == NULL)
{
return false;
}
while ((dirinfo = ::readdir(dir)) != NULL)
{
if (strcmp(dirinfo->d_name, ".") == 0 || strcmp(dirinfo->d_name, "..") == 0) // 是否是特殊目录
continue;
string absPath = dirName + "/" + string(dirinfo->d_name);
myyk::CDir::rmdir(absPath);
}
closedir(dir);
::rmdir(dirName.c_str());
}
else
{
return false;
}
return true;
}
[/code]
|