c語言實現資料夾的建立和刪除
阿新 • • 發佈:2019-01-08
參考:
在linux環境下標頭檔案為:
###############
可疊加使用,如0755表示S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH。表示該檔案所有者擁有讀,寫和執行操作許可權去,該檔案使用者組擁有可讀,可執行的許可權,其他使用者擁有可讀,可執行的許可權。
linux環境下標頭檔案:
##########################################################
判斷資料夾是否存在:
在windows環境下標頭檔案為:
- #include <io.h>
在linux環境下標頭檔案為:
- #include <unistd.h>
- <pre name="code"class="cpp">int access(constchar* _Filename, int _AccessMode)
該函式功能為確定檔案或資料夾的訪問許可權,如果指定的訪問許可權有效,則函式返回0,否則返回-1
Filename可以是檔案路徑,也可以是資料夾路徑,可以使用絕對路徑或相對路徑
_AccessMode表示要驗證的檔案訪問許可權,有可讀、可寫、可執行以及是否存在四種許可權,當Filename表示資料夾時僅能查詢資料夾是否存在
_AccessMode:
標頭檔案unistd.h中有如下定義:
- #define R_OK 4 /* Test for read permission. */
- #define W_OK 2 /* Test for write permission. */
- #define X_OK 1 /* Test for execute permission. */
-
#define F_OK 0 /* Test for existence. */
- 具體含義如下:
- R_OK 只判斷是否有讀許可權
- W_OK 只判斷是否有寫許可權
- X_OK 判斷是否有執行許可權
- F_OK 只判斷是否存在
- 在巨集定義裡面分別對應:
- 00 只存在
- 02 寫許可權
- 04 讀許可權
- 06 讀和寫許可權
_AccessMode=00表示只判斷是否存在
_AccessMode=02表示檔案是否可執行
_AccessMode=04表示檔案是否可寫
_AccessMode=06表示檔案是否可讀
在windows環境下還可使用函式_access:
-
int _access(constchar* _Filename, int _AccessMode)
###############
建立新的資料夾:
windows環境下標頭檔案為:
- #include <direct.h>
函式原型為:
- int mkdir(constchar *_Path)
_Path:新建資料夾路徑,可使用絕對路徑,可也用相對路徑
windows環境下也可用函式_mkdir:
- _mkdir(constchar *_Path)
預設mode是0777,表示最大可能的訪問權
Linux環境下標頭檔案為:
- #include <sys/types.h>
- #include <sys/stat.h>
函式原型為:
- int mkdir(constchar *pathname, mode_t 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環境下標頭檔案:
- #include <direct.h>
linux環境下標頭檔案:
- #include <dirent.h>
函式原型為:
- int rmdir(constchar *_Path)
在windows環境下也可使用函式_rmdir
######################
實現程式:
- int main(void)
- {
- string dir="./hello";
- if (access(dir.c_str(), 0) == -1)
- {
- cout<<dir<<" is not existing"<<endl;
- cout<<"now make it"<<endl;
- #ifdef WIN32
- int flag=mkdir(dir.c_str());
- #endif
- #ifdef linux
- int flag=mkdir(dir.c_str(), 0777);
- #endif
- if (flag == 0)
- {
- cout<<"make successfully"<<endl;
- } else {
- cout<<"make errorly"<<endl;
- }
- }
- if (access(dir.c_str(), 0) == 0)
- {
- cout<<dir<<" exists"<<endl;
- cout<<"now delete it"<<endl;
- int flag=rmdir(dir.c_str());
- if (flag == 0)
- {
- cout<<"delete it successfully"<<endl;
- } else {
- cout<<"delete it errorly"<<endl;
- }
- }
- //cout<<"Hello World"<<endl;
- cout<<"end..."<<endl;
- cin.get();
- return 0;
- }
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>https://zhidao.baidu.com/question/79474870.html
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;
}