_access、_waccess
若要判斷檔案是否為唯讀 可用更安全的版本;請參閱 _access_s、_waccess_s。
int _access(
const char *path,
int mode
);
int _waccess(
const wchar_t *path,
int mode
);
參數
path
檔案或目錄的路徑。mode
讀取/寫入屬性。
傳回值
如果檔案具有特定模式,每個函式會傳回 0。 如果具名檔案不存在或沒有指定模式;在這種情況下,如下表所示 errno 設定,函式會傳回 1。
EACCES
存取遭拒:檔案的使用權限設定不允許指定的權限。ENOENT
找不到檔案名稱或路徑。EINVAL
無效參數。
如需更多關於這些和其他回傳碼的資訊,請參閱 _doserrno 、 errno 、 _sys_errlist 、和 _sys_nerr (_doserrno, errno, _sys_errlist, and _sys_nerr) 。
備註
當使用檔案,則 _access 函式會判斷指定檔案或目錄是否存在且具有指定 mode的值的屬性。 當使用目錄 _access ,判斷指定的目錄是否存在;只有在 Windows 2000 (含) 以後版本的作業系統,所有目錄有讀取和寫入權限。
mode 值 |
檢查檔案。 |
---|---|
00 |
只存在 |
02 |
唯寫 |
04 |
唯讀 |
06 |
讀取和寫入 |
這個函式只檢查是否檔案和目錄是唯讀的,它不會檢查檔案系統安全性設定。 對於您需要存取語彙基元。 如需檔案系統安全性的詳細資訊,請參閱 存取語彙基元。。 ATL 類別沒有提供這項功能;請參閱 CAccessToken Class。
_waccess 是 _access 的寬字元版本。 _waccess 的 path 引數是寬字元字串。 _waccess 和 _access 其餘行為相同。
這個函式會驗證它的參數。 如果 path 是 NULL 或 mode 沒有指定有效的方式,無效的參數叫用處理常式,如 參數驗證中所述。 如果允許繼續執行,則函式會將 errno 設定為 EINVAL並傳回。
一般文字常式對應
Tchar.h 常式 |
未定義 _UNICODE and _MBCS |
_MBCS 已定義 |
_UNICODE 已定義 |
---|---|---|---|
_taccess |
_access |
_access |
_waccess |
需求
常式 |
必要的標頭 |
選擇性的標頭檔 |
---|---|---|
_access |
<io.h> |
<errno.h> |
_waccess |
<wchar.h> or <io.h> |
<errno.h> |
範例
下列範例會使用 _access 檢查名為 crt_ACCESS.C 的檔案看它是否存在,還有寫入是否啟用。
// crt_access.c
// compile with: /W1
// This example uses _access to check the file named
// crt_ACCESS.C to see if it exists and if writing is allowed.
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
// Check for existence.
if( (_access( "crt_ACCESS.C", 0 )) != -1 )
{
printf_s( "File crt_ACCESS.C exists.\n" );
// Check for write permission.
// Assume file is read-only.
if( (_access( "crt_ACCESS.C", 2 )) == -1 )
printf_s( "File crt_ACCESS.C does not have write permission.\n" );
}
}