函式原型: int access(const char *filename, int mode)
所屬標頭檔案:#include , #include
返回值: 返回0 表示成功,返回 -1表示錯誤。
filename:目錄路徑或者檔案路徑
mode: 這個函式檢查檔案屬性: (0111,八進位制對應rwx)
06 檢查讀寫許可權
r_ok 04 檢查讀許可權
w_ok 02 檢查寫許可權
x_ok 01 檢查執行許可權
f_ok 00 檢查檔案的存在性,如果檔案存在,返回0,不存在,返回-1
函式原型: int mkdir(const char *path, mode_t mode)
所屬標頭檔案: #include , #include
返回值: 返回值: 返回0 表示成功,返回 -1表示錯誤,並且會設定errno值。
path:資料夾路徑或者檔案路徑
mode: 這個函式檢查檔案屬性: (0111, 第一位代表檔案所有者的許可權,第二位代表檔案使用者組的許可權,第三位代表其他使用者的許可權),可多個許可權相或
s_irwxu 0700許可權,代表該檔案所有者擁有讀,寫和執行操作的許可權,相當於s_irusr | s_iwusr | s_ixusr
s_irusr(s_iread) 0400許可權,代表該檔案所有者擁有可讀的許可權
s_iwusr(s_iwrite) 0200許可權,代表該檔案所有者擁有可寫的許可權
s_ixusr(s_iexec) 0100許可權,代表該檔案所有者擁有執行的許可權
s_irwxg 0070許可權,代表該檔案使用者組擁有讀,寫和執行操作的許可權,相當於s_irgrp | s_iwgrp | s_ixgrp
s_irgrp 0040許可權,代表該檔案使用者組擁有可讀的許可權
s_iwgrp 0020許可權,代表該檔案使用者組擁有可寫的許可權
s_ixgrp 0010許可權,代表該檔案使用者組擁有執行的許可權
s_irwxo 0007許可權,代表其他使用者擁有讀,寫和執行操作的許可權,相當於s_iroth | s_iwoth | s_ixoth
s_iroth 0004許可權,代表其他使用者擁有可讀的許可權
s_iwoth 0002許可權,代表其他使用者擁有可寫的許可權
s_ixoth 0001許可權,代表其他使用者擁有執行的許可權
(1) c++版本
正確的路徑為: /usr/test/dir, /usr/test/dir/, dir
排除掉這種路徑: /, usr/test/dir/
#include #include #include #include #include #include #include #include #define dprint printf //除錯輸出
#define eprint printf //錯誤輸出
#define dir_mode (0777) //資料夾許可權
#define dir_path_max_size (256) //資料夾路徑最大大小
int checkdirpath(const std::string& sdirpath)
//引數合法性處理,避免這種情況,只傳/
if(0 == sdirpath.compare("/"))
//引數合法性處理,避免這種情況,傳usr/local
size_t nbegin = sdirpath.find("/", 0); //找到返回最開始出現位置,沒找到返回std::string::npos
if(std::string::npos != nbegin && 0 != nbegin)
return 0;
}int createdirs(const std::string& sdirpath)
//開始建立
char szdirpath[dir_path_max_size] = ;
strncpy(szdirpath, sdirpath.c_str(), dir_path_max_size);
int nlen=strlen(szdirpath);
for(int i = 1; i < nlen; i++ ) //如/usr/test/dir/,這裡建立/usr、 /usr/test 、 /usr/test/dir, 這種情況可以建立完
}szdirpath[i]='/';}}
if(nlen > 0 && (access(szdirpath, 0) != 0) ) //這裡建立這種情況usr或者/usr/test/dir
}dprint("createdirs (%s) success \n", sdirpath.c_str());
return 0;
}int main(void)
(2) c版本
正確的路徑為: /usr/test/dir, /usr/test/dir/, dir
排除掉這種路徑: /, usr/test/dir/
#include #include #include #include #include #include #include #include #define dprint printf //除錯輸出
#define eprint printf //錯誤輸出
#define dir_mode (0777) //資料夾許可權
#define dir_path_max_size (256) //資料夾路徑最大大小
int check_dir_path(const char* dir_path)
//引數合法性處理,避免這種情況,只傳/
if(0 == strcmp(dir_path, "/"))
//引數合法性處理,避免這種情況,傳usr/local
//strstr是一種函式,從字串str1中查詢是否有符串str2,如果有,從str1中的str2位置起,返回str1的指標,如果沒有,返回null。
char* p = strstr(dir_path, "/");
if(null != p && p != dir_path) //如果能匹配到/,出現位置不在首位, 即p位址跟dir_path (等同於&dir_path[0])位址不一樣, 返回錯誤
return 0;
}int create_dirs(const char* dir_path)
//開始建立
char sz_dir_path[dir_path_max_size] = ;
strncpy(sz_dir_path, dir_path, dir_path_max_size);
int len = strlen(sz_dir_path);
int i;
for(i = 1; i < len; i++ ) //如/usr/test/dir/,這裡建立/usr、 /usr/test 、 /usr/test/dir, 這種情況可以建立完
}sz_dir_path[i]='/';}}
if(len > 0 && (access(sz_dir_path, 0) != 0) ) //這裡建立這種情況usr或者/usr/test/dir
}dprint("create dirs (%s) success \n", dir_path);
return 0;
}int main(void)
檔案操作函式(1) fseek
int fseek file stream,long offset,int origin 第乙個引數stream為檔案 指標 第二個引數offset為 偏移量,正數表示正向偏移,負數表示負向偏移 第三個引數origin設定從檔案的 開始偏移,可能取值為 seek cur seek end 或 see...
檔案操作1
ios 沙盒中一共有 4個資料夾 安裝目錄 home 唯讀 documents 長期放使用者檔案或資料夾,rw tmp 存放臨時檔案,rw library caches 存放快取檔案,rw nsarray nssearchpathfordirectoriesindomains nssearchpat...
檔案操作 1
檔案操作 不論操作什麼型別的檔案,第一步先開啟乙個檔案,第二步,讀寫檔案,第三步關閉檔案。fopen r 以唯讀方式開啟檔案,該檔案必須存在。r 以可讀寫方式開啟檔案,該檔案必須存在。用r 寫檔案時候,從檔案開始位置寫入 rb 讀寫開啟乙個二進位制檔案,允許讀寫資料,檔案必須存在。rw 讀寫開啟乙個...