#include <iostream>
#ifdef __POSIX__
#include <unistd.h>
#include <dirent.h>
#else
#include <io.h>
#include <direct.h>
#endif // __POSIX__
int makeDirs(const char* szDir)
{
if (NULL == szDir)
{
return -1;
}
int iRet = 0;
std::string strDir = szDir;
int index = strDir.find_last_of('/');
if (0 < index) //存在多级目录
{
strDir.erase(index, strDir.length() - index);
#ifdef __POSIX__
if (-1 == access(strDir.c_str(), 0)) //若父目录不存在,则创建父目录
{
iRet = makeDirs(strDir.c_str()); //递归创建父目录
}
#else //ISO
if (-1 == _access(strDir.c_str(), 0)) //若父目录不存在,则创建父目录
{
iRet = makeDirs(strDir.c_str()); //递归创建父目录
}
#endif // __POSIX__
}
if (0 == iRet) //父目录创建成功
{
#ifdef __POSIX__
iRet = mkdir(szDir, 0755);
#else
iRet = _mkdir(szDir);
#endif // __POSIX__
}
return iRet;
}
C/C++程序创建多级文件夹
最新推荐文章于 2024-04-30 22:35:34 发布