创建多层目录
代码如下:
#include
#include
int mkpath(string s, mode_t mode = 0755);
int mkpath(string s, mode_t mode)
{
size_t pre = 0, pos = 0;
string dir;
int ret = 0;
if(s[s.size() - 1] != '/')
{
s+='/';
}
while((pos = s.find_first_of('/', pre)) != string::npos)
{
dir = s.substr(0, pos++);
pre = pos;
if(0 == dir.size())
{
continue;
}
if((ret = mkdir(dir.c_str(), mode)) && errno != EEXIST)
{
return ret;
}
}
return ret;
}
清空目录下的文件
代码如下:
int emptyDir(string& destDir)
{
int ret = 0;
DIR* dp = NULL;
struct dirent* entry = NULL;
struct stat statbuf;
if ((dp = opendir(destDir.c_str())) == NULL)
{
LOG4CXX_ERROR(logger, "cannot open directory!");
return -1;
}
while((entry = readdir(dp)) != NULL)
{
if("." == string(entry->d_name) || ".." == string(entry->d_name))
{
continue;
}
lstat(entry->d_name, &statbuf);
if (!S_ISREG(statbuf.st_mode))
{
string temp = destDir + "/" + string(entry->d_name);
ret = remove(temp.c_str());
if(ret)
{
LOG4CXX_ERROR(logger, "delete "<