linux和Windows C++ 文件夾創建、刪除


linux

 

// 創建、刪除文件夾
void mkdir_output(const string &output_path){
    if (access(output_path.c_str(), 0) == -1) {
        // mkdir(output_path.c_str(),S_IRUSR | S_IWUSR | S_IXUSR | S_IRWXG | S_IRWXO);
        system(("mkdir "+output_path).c_str());
        std::cout<<output_path<<" create! "<<std::endl;
    }
    else {
        system(("rm -rf "+output_path).c_str());
        system(("mkdir "+output_path).c_str());
        std::cout<<output_path<<" recover create! "<<std::endl;
    }
}

 

 

access函數在windows系統中在頭文件<io.h>中,在Ubuntu系統中則是在<unistd.h>之中

函數原型:int _access(const char *pathname, int mode);

參數:pathname 為文件路徑或目錄路徑 mode 為訪問權限(在不同系統中可能用不能的宏定義重新定義)

返回值:如果文件具有指定的訪問權限,則函數返回0;如果文件不存在或者不能訪問指定的權限,則返回-1.

備注:當pathname為文件時,_access函數判斷文件是否存在,並判斷文件是否可以用mode值指定的模式進行訪問。當pathname為目錄時,_access只判斷指定目錄是否存在,在Windows NT和Windows 2000中,所有的目錄都只有讀寫權限。

mode的值和含義如下所示:

00——只檢查文件是否存在

02——寫權限

04——讀權限

06——讀寫權限

 

linux的mkdir  #include <sys/stat.h>

linux的mkdir 函數原型如下:

int mkdir(const char *pathname, mode_t mode);

今天使用linux的mkdir創建目錄。

函數說明:

   mkdir()函數以mode方式創建一個以參數pathname命名的目錄,mode定義新創建目錄的權限。
返回值:
若目錄創建成功,則返回0;否則返回-1,並將錯誤記錄到全局變量errno中。
 
mode方式: 
S_IRWXU 00700權限,代表該文件所有者擁有讀,寫和執行操作的權限
S_IRUSR(S_IREAD) 00400權限,代表該文件所有者擁有可讀的權限
S_IWUSR(S_IWRITE) 00200權限,代表該文件所有者擁有可寫的權限
S_IXUSR(S_IEXEC) 00100權限,代表該文件所有者擁有執行的權限
S_IRWXG 00070權限,代表該文件用戶組擁有讀,寫和執行操作的權限
S_IRGRP 00040權限,代表該文件用戶組擁有可讀的權限
S_IWGRP 00020權限,代表該文件用戶組擁有可寫的權限
S_IXGRP 00010權限,代表該文件用戶組擁有執行的權限
S_IRWXO 00007權限,代表其他用戶擁有讀,寫和執行操作的權限
S_IROTH 00004權限,代表其他用戶擁有可讀的權限
S_IWOTH 00002權限,代表其他用戶擁有可寫的權限
S_IXOTH 00001權限,代表其他用戶擁有執行的權限

 Windows

 

// 創建、刪除文件夾 windows
//#include <io.h>  // <io.h> if windows else <unistd.h>
//#include <direct.h>
void mk_dir(const string& path) {
    if (_access(path.c_str(), 0) == -1) {
        
        _mkdir(path.c_str());
        std::cout << path << " create! " << std::endl;
    }
    else {
       //rmdir(path.c_str());
        _mkdir(path.c_str());
        std::cout << path << " recover create! " << std::endl;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM