1. 程式人生 > >c++創建文件夾以及子文件夾

c++創建文件夾以及子文件夾

mod unistd.h include ESS director access AI mode rwx

#ifdef WIN32
#include <io.h>
#include <direct.h> 
#else
#include <unistd.h>
#include <sys/stat.h>
#endif
#include <stdint.h>
#include <string>
#define MAX_PATH_LEN 256

#ifdef WIN32
#define ACCESS(fileName,accessMode) _access(fileName,accessMode)
#define MKDIR(path) _mkdir(path)
#else
#define ACCESS(fileName,accessMode) access(fileName,accessMode) #define MKDIR(path) mkdir(path,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) #endif // 從左到右依次判斷文件夾是否存在,不存在就創建 // example: /home/root/mkdir/1/2/3/4/ // 註意:最後一個如果是文件夾的話,需要加上 ‘\‘ 或者 ‘/‘ int32_t createDirectory(const std::string &directoryPath) { uint32_t dirPathLen
= directoryPath.length(); if (dirPathLen > MAX_PATH_LEN) { return -1; } char tmpDirPath[MAX_PATH_LEN] = { 0 }; for (uint32_t i = 0; i < dirPathLen; ++i) { tmpDirPath[i] = directoryPath[i]; if (tmpDirPath[i] == \\ || tmpDirPath[i] == /) {
if (ACCESS(tmpDirPath, 0) != 0) { int32_t ret = MKDIR(tmpDirPath); if (ret != 0) { return ret; } } } } return 0; } int32_t main(int32_t argc, char *argv[]) { if (argc == 2) { return createDirectory(argv[1]); } return 0; }

c++創建文件夾以及子文件夾