1. 程式人生 > >c語言實現資料夾的建立和刪除

c語言實現資料夾的建立和刪除

參考:

##########################################################

判斷資料夾是否存在:

在windows環境下標頭檔案為:

  1. #include <io.h>

在linux環境下標頭檔案為:
  1. #include <unistd.h>

  1. <pre name="code"class="cpp">int access(constchar* _Filename, int _AccessMode)  
上述函式在windows和linux環境下均可使用

該函式功能為確定檔案或資料夾的訪問許可權,如果指定的訪問許可權有效,則函式返回0,否則返回-1

Filename可以是檔案路徑,也可以是資料夾路徑,可以使用絕對路徑或相對路徑

_AccessMode表示要驗證的檔案訪問許可權,有可讀、可寫、可執行以及是否存在四種許可權,當Filename表示資料夾時僅能查詢資料夾是否存在

_AccessMode:

標頭檔案unistd.h中有如下定義:

  1. #define R_OK 4 /* Test for read permission. */
  2. #define W_OK 2 /* Test for write permission. */
  3. #define X_OK 1 /* Test for execute permission. */
  4. #define F_OK 0 /* Test for existence. */
  5. 具體含義如下:  
  6. R_OK 只判斷是否有讀許可權  
  7. W_OK 只判斷是否有寫許可權  
  8. X_OK 判斷是否有執行許可權  
  9. F_OK 只判斷是否存在  
  10. 在巨集定義裡面分別對應:  
  11. 00 只存在  
  12. 02 寫許可權  
  13. 04 讀許可權  
  14. 06 讀和寫許可權  

_AccessMode=00表示只判斷是否存在

_AccessMode=02表示檔案是否可執行

_AccessMode=04表示檔案是否可寫

_AccessMode=06表示檔案是否可讀

在windows環境下還可使用函式_access:

  1. int _access(constchar* _Filename, int _AccessMode)  

###############

建立新的資料夾:

windows環境下標頭檔案為:

  1. #include <direct.h>

函式原型為:

  1. int mkdir(constchar *_Path)  
該函式功能為建立一個新的目錄,建立成功則返回0,否則返回-1

_Path:新建資料夾路徑,可使用絕對路徑,可也用相對路徑

windows環境下也可用函式_mkdir:

  1. _mkdir(constchar *_Path)  

預設mode是0777,表示最大可能的訪問權

Linux環境下標頭檔案為:

  1. #include <sys/types.h>
  2. #include <sys/stat.h>

函式原型為:

  1. int mkdir(constchar *pathname, mode_t mode);  
該函式功能為建立一個新的目錄,並指定它的執行許可權。如果建立成功則返回0,否則,返回-1
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許可權,代表其他使用者擁有執行的許可權
可疊加使用,如0755表示S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH。表示該檔案所有者擁有讀,寫和執行操作許可權去,該檔案使用者組擁有可讀,可執行的許可權,其他使用者擁有可讀,可執行的許可權。

#################################################

刪除資料夾:

windows環境下標頭檔案:

  1. #include <direct.h>

linux環境下標頭檔案:
  1. #include <dirent.h>


函式原型為:

  1. int rmdir(constchar *_Path)  
函式功能是刪除引數指定的資料夾,成功返回0,否則返回-1

在windows環境下也可使用函式_rmdir

######################

實現程式:

  1. int main(void)  
  2. {  
  3.     string dir="./hello";  
  4.     if (access(dir.c_str(), 0) == -1)  
  5.     {  
  6.         cout<<dir<<" is not existing"<<endl;  
  7.         cout<<"now make it"<<endl;  
  8. #ifdef WIN32
  9.         int flag=mkdir(dir.c_str());   
  10. #endif
  11. #ifdef linux 
  12.         int flag=mkdir(dir.c_str(), 0777);  
  13. #endif
  14.         if (flag == 0)  
  15.         {  
  16.             cout<<"make successfully"<<endl;  
  17.         } else {  
  18.             cout<<"make errorly"<<endl;  
  19.         }  
  20.     }  
  21.     if (access(dir.c_str(), 0) == 0)  
  22.     {  
  23.         cout<<dir<<" exists"<<endl;  
  24.         cout<<"now delete it"<<endl;  
  25.         int flag=rmdir(dir.c_str());  
  26.         if (flag == 0)  
  27.         {  
  28.             cout<<"delete it successfully"<<endl;  
  29.         } else {  
  30.             cout<<"delete it errorly"<<endl;  
  31.         }  
  32.     }  
  33.     //cout<<"Hello World"<<endl;
  34.     cout<<"end..."<<endl;  
  35.     cin.get();  
  36.     return 0;  
  37. }  

http://blog.csdn.net/u012005313/article/details/50688257

函式名: mkdir 
功 能: 建立一個目錄(資料夾)
用 法: int mkdir(char *pathname);
程式例: (在win-tc和Dev-c++下執行通過)
#include <stdio.h>
#include <process.h>
//#include <dir.h> 
#include <dirent.h>  


int main(void)
{
int status;
system("cls");
status = mkdir("book"); /*這是在程式所在當前資料夾下建立book*/
(!status) ? (printf("Directory created\n")) :
(printf("Unable to create directory\n"));
system("pause");
system("dir"); /*顯示建立後當前資料夾下的檔案資訊*/
system("pause");

status = rmdir("book"); /*刪除建立的資料夾book*/
(!status) ? (printf("Directory deleted\n")) :
(perror("Unable to delete directory"));
system("pause");
return 0;
}
https://zhidao.baidu.com/question/79474870.html