該函數主要用於文件讀取方面——判斷文件是否存在,並判斷文件是否可寫。Linux下,該函數爲access,位於頭文件<unistd.h>中,而在標準C++中,該函數爲_access,位於頭文件<io.h>中,兩者的使用方法基本相同,只是在一些參數方面可能會有一些不同的宏定義。下面是標準C++爲例做一下總結:
頭文件:<io.h>
函數原型:int _access(const char *pathname, int mode);
參數:pathname 爲文件路徑或目錄路徑 mode 爲訪問權限(在不同系統中可能用不能的宏定義重新定義)
返回值:如果文件具有指定的訪問權限,則函數返回0;如果文件不存在或者不能訪問指定的權限,則返回-1.
備註:當pathname爲文件時,_access函數判斷文件是否存在,並判斷文件是否可以用mode值指定的模式進行訪問。當pathname爲目錄時,_access只判斷指定目錄是否存在,在Windows NT和Windows 2000中,所有的目錄都只有讀寫權限。
mode的值和含義如下所示:
00——只檢查文件是否存在
02——寫權限
04——讀權限
06——讀寫權限
對應的還有_access的寬字符版本,用法相同。
例子:
C++
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
if ((_access(“IsExist.txt”, 0)) != -1)
{
printf(“File IsExist.txt exists.\n”);
if ((_access(“IsExist.txt”, 2)) != -1)
printf(“File IsExist.txt does not have write permission.\n”);
}
return 0;
}