方法1. access函數(shù)
站在用戶的角度思考問題,與客戶深入溝通,找到南譙網(wǎng)站設(shè)計與南譙網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋南譙地區(qū)。
適用范圍:所有C/C++項目
頭文件: #include < io.h>
函數(shù)原型: intaccess(const char *filename, int mode);
函數(shù)說明:判斷是否具有存取文件的權(quán)限
函數(shù)參數(shù)說明:
filename:可以填寫文件夾路徑或者文件路徑
mode:
F_OK (或0):判斷該文件/文件夾是否存在;
R_OK (或2):判斷該文件/文件夾是否有讀權(quán)限;
W_OK (或4):判斷該文件/文件夾是否有寫入權(quán)限;
X_OK (或6):判斷該文件/文件夾是否有執(zhí)行權(quán)限;
返回值:
若存在或者具有權(quán)限,返回值為0;不存在或者無權(quán)限,返回值為-1,并把錯誤代碼存在errno中(errno.h中定義)。
錯誤代碼:
EACCESS:參數(shù)pathname所指定的文件不符合所要求測試的權(quán)限.
EROFS:欲測試寫入權(quán)限的文件存在于只讀文件系統(tǒng)內(nèi).
EFAULT:參數(shù)pathname指針超出可存取內(nèi)存空間.
EINVAL:參數(shù)mode不正確.
ENAMETOOLONG:參數(shù)pathname太長.
ENOTDIR:參數(shù)pathname為一目錄.
ENOMEM:核心內(nèi)存不足
ELOOP:參數(shù)pathname有過多符號連接問題.
EIO I/O:存取錯誤.
#include <stdio.h> #include <io.h> int main(int argc, const char** argv) { char* filePath = "C://Users//Public//Downloads" ; if (_access(filePath,0) == -1) { printf("The file/dir doesn't exisit"); } else { printf("Exisit "); } return 0; } |
方法2. fopen函數(shù)
適用范圍:所有C/C++項目
頭文件: #include<stdio.h>或 #include<fstream>
函數(shù)原型: FILE *fopen(const char * path, const char * mode);
函數(shù)說明:判斷是否具有存取文件的權(quán)限
函數(shù)參數(shù)說明:
filename:可以填寫文件夾路徑或者文件路徑
mode:
r :以只讀方式打開文件,該文件必須存在。
r+ :以可讀寫方式打開文件,該文件必須存在。
w :打開只寫文件,若文件存在則文件長度清為0,即該文件內(nèi)容會消失。若文件不存在則建立該文件。
a:以附加的方式打開只寫文件。
b:二進制文件。
返回值:
文件順利打開后,指向該流的文件指針就會被返回。如果文件打開失敗則返回NULL,并把錯誤代碼存在errno中(errno.h中定義)。
用于判斷文件是否存在可以使用 r或者 rb,返回值為NULL,說明打不開或不存在。但用這種方法做出的判斷是不完全正確的,因為有的文件存在,但是可能不可讀。
#include <stdio.h> //#include<fstream> int main(int argc, const char** argv) { char* filePath = "C://Users//Public//Downloads" ; FILE *fp=NULL; fp = fopen(filePath,"r");//只供讀取 if (fp == NULL) { printf("The file/dir doesn't exisit"); } else { printf("Exisit "); } fclose(fp);//關(guān)閉文件 fp=NULL;//需要指向空,否則會指向原打開文件地址 return 0; } |
擴展.建一個文件夾
頭文件: #include<direct.h>
函數(shù)原型: int _mkdir(const char *path,mode_t mode);
函數(shù)說明:建立一個文件夾
返回值:創(chuàng)建成功則返回0,否則返回-1
方法3. FindFirstFile函數(shù)
適用范圍:windows平臺
頭文件: #include "windows.h"
函數(shù)原型:
__out HANDLEWINAPI FindFirstFileW(
__in LPCWSTR lpFileName,
__outLPWIN32_FIND_DATAW lpFindFileData);
或
__outHANDLE WINAPI FindFirstFileA(
__in LPCSTR lpFileName,
__outLPWIN32_FIND_DATAW lpFindFileData);
函數(shù)說明:檢查文件或文件夾是否存在
#include <stdio.h> #include "windows.h" int main(int argc, const char** argv) { WIN32_FIND_DATA wfd ; HANDLE hFind; WCHAR *filePath = L"C://Users//Public//Downloads"; hFind = FindFirstFile(filePath, & wfd );
//判斷文件 if (hFind == INVALID_HANDLE_VALUE) { printf ("Invalid File Handle. Get Last Error reports %d ", GetLastError()); } else { printf ("The first file found is %s ", wfd .cFileName); FindClose(hFind); }
//判斷文件夾 if (hFind != INVALID_HANDLE_VALUE &&(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { printf ("The first file found is %s ", wfd.cFileName); FindClose(hFind); } else { printf ("Invalid File Handle. Get Last Error reports %d ", GetLastError()); }
return (0); } |
方法4. PathFileExists函數(shù)
適用范圍:MFC項目
頭文件: #include <shlwapi.h>
函數(shù)原型:
LWSTDAPI_(BOOL) PathFileExistsA(__in LPCSTR pszPath);
或:
LWSTDAPI_(BOOL) PathFileExistsW(__in LPCWSTR pszPath);
參考:
http://blog.csdn.net/roger_77/article/details/1538447
http://blog.csdn.net/gneveek/article/details/6848473
http://blog.csdn.net/xhhjin/article/details/6369336
本文名稱:(二)C/C++中判斷文件或文件夾是否存在
文章網(wǎng)址:http://jinyejixie.com/article36/pdsdpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、企業(yè)網(wǎng)站制作、營銷型網(wǎng)站建設(shè)、企業(yè)建站、建站公司、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)