头文件.h
#ifndef AUTODELETEADDFOLDER_H
#define AUTODELETEADDFOLDER_H
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <dirent.h>
#include <string.h>
#include <iostream>
#include <sys/stat.h>
#include <sys/types.h>
int CreateDir(const char *sPathName);
void error_quit( const char *msg );
void change_path( const char *path );
void rm_dir( const char *path );
//格式 path = “/home/wc/qtproject/launchWidget/launchWidget/temp/”
//说明 ZDnum :要创建多少个文件夹
void autoDelete_CreateFolder( std::string &path,const int ZDnum);
#endif
源文件.cpp
#include "autodeleteaddfolder.h"
int CreateDir(const char *sPathName)
{
char DirName[256];
strcpy(DirName, sPathName);
int i,len = strlen(DirName);
for(i=1; i<len; i++)
{
if(DirName[i]=='/')
{
DirName[i] = 0;
if(access(DirName, NULL)!=0)
{
if(mkdir(DirName, 0755)==-1)
{
printf("mkdir error\n");
return -1;
}
}
DirName[i] = '/';
}
}
return 0;
}
void error_quit( const char *msg )
{
perror( msg );
exit( -1 );
}
void change_path( const char *path )
{
if ( chdir( path ) == -1 )
error_quit( "chdir" );
}
void rm_dir( const char *path )
{
DIR *dir;
struct dirent *dirp;
struct stat buf;
char *p = getcwd( NULL, 0 );
if ( (dir = opendir( path ) ) == NULL )
error_quit( "OpenDir" );
change_path( path );
while ( dirp = readdir( dir ) )
{
if ( (strcmp( dirp->d_name, "." ) == 0) || (strcmp( dirp->d_name, ".." ) == 0) )
continue;
if ( stat( dirp->d_name, &buf ) == -1)//-1
error_quit( "stat" );
if ( S_ISDIR( buf.st_mode ) )
{
rm_dir( dirp->d_name );
continue;
}
if ( remove( dirp->d_name ) == -1 ) //-1
error_quit( "remove" );
}
closedir( dir );
change_path( p );
if ( rmdir( path ) == -1 ) //-1
error_quit( "rmdir" );
}
void autoDelete_CreateFolder( std::string &path,const int ZDnum){
rm_dir(path.data());
CreateDir(path.data());
std::string pathYE = path;
pathYE.append("YE/");
CreateDir(pathYE.data());
for(int i=0;i<ZDnum;i++)
{
std::string ZDfolder = path;
ZDfolder.append("ZD").append(std::to_string(i)).append("/");
CreateDir(ZDfolder.data());
}
}