【C/C++】如何判断文件夹或者文件是否存在
方法一:access函數(shù)判斷文件夾或者文件是否存在
函數(shù)原型: int access(const char *filename, int mode);
所屬頭文件:io.h
filename:可以填寫文件夾路徑或者文件路徑
mode:0 (F_OK) 只判斷是否存在
???????????2 (R_OK) 判斷寫入權(quán)限
???????????4 (W_OK) 判斷讀取權(quán)限
???????????6 (X_OK) 判斷執(zhí)行權(quán)限
用于判斷文件夾是否存在的時候,mode取0,判斷文件是否存在的時候,mode可以取0、2、4、6。 若存在或者具有權(quán)限,返回值為0;不存在或者無權(quán)限,返回值為-1。
錯誤代碼
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 存取錯誤。
特別提醒:使用access()作用戶認(rèn)證方面的判斷要特別小心,例如在access()后再做open()的空文件可能會造成系統(tǒng)安全上的問題。
?實例:
#include?<stdio.h> #include <io.h>int main(void) {if ( !access("C://windows",0) )puts("C://windows EXISITS!");elseputs("C://windows DOESN'T EXISIT!");return 0; }方法二:fopen函數(shù)判斷文件是否存在
函數(shù)原型:FILE *fopen (char *filename, char *type);
filename:文件路徑
type:打開文件的方式(有r、w、r+、w+、a、rb、wb等等)
用于判斷文件是否存在可以使用 r 或者 rb ,因為使用 其它方式的話,可能會自動建立文件。 返回值為NULL(打不開)和正數(shù)(能打開)。
特別提醒:用這種方法做出的判斷是不完全正確的,因為有的文件存在,但是可能不可讀。
轉(zhuǎn)自:https://blog.csdn.net/xhhjin/article/details/6369336。
總結(jié)
以上是生活随笔為你收集整理的【C/C++】如何判断文件夹或者文件是否存在的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于USES_CONVERSION的W2
- 下一篇: 【C/C++】代码优化技巧