_access
、 、 _waccess
t_access
判斷檔案是否為唯讀。 提供更安全的版本;請參閱 _access_s
、 _waccess_s
。
如需 _taccess
,請參閱 泛型文字函式對應。
語法
int _access(
const char *path,
int mode
);
int _waccess(
const wchar_t *path,
int mode
);
參數
path
檔案或目錄路徑。
mode
讀取/寫入屬性。
傳回值
如果檔案有指定模式,每個函式都會傳回 0。 如果具名檔案不存在或沒有指定的模式,則函式會傳回 -1;在此情況下, errno
會設定如下表所示。
值 | Description |
---|---|
EACCES |
拒絕存取:檔案的許可權設定不允許指定的存取。 |
ENOENT |
找不到檔案名稱或路徑。 |
EINVAL |
無效的 參數。 |
如需這些傳回碼和其他傳回碼的詳細資訊,請參閱errno
、 _sys_errlist
_doserrno
和 _sys_nerr
。
備註
搭配檔案使用時,_access
函式會判斷指定的檔案或目錄是否存在,以及是否有 mode
值指定的屬性。 搭配目錄使用時, _access
只會判斷指定的目錄是否存在;在 Windows 2000 和更新版本的作業系統中,所有目錄都有讀取和寫入許可權。
mode 值 |
檢查檔案 |
---|---|
00 | 只存在 |
02 | 唯寫 |
04 | 唯讀 |
06 | 讀取和寫入 |
此函式只會檢查檔案和目錄是否為唯讀,而不會檢查文件系統安全性設定。 該項作業需要存取權杖。 如需文件系統安全性的詳細資訊,請參閱 存取令牌。 ATL 類別存在以提供這項功能;請參閱 CAccessToken
類別。
_waccess
是寬字元版本的 _access
; path
的 _waccess
引數是寬字元字串。 否則,_waccess
和 _access
的行為即會相同。
這個函式會驗證它的參數。 如果 path
是 NULL
或 mode
未指定有效的模式,則會叫用無效的參數處理程式,如參數驗證中所述。 如果允許繼續執行,則函式會將 errno
設定為 EINVAL
並傳回 -1。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
泛型文字函式對應
Tchar.h 常式 |
_UNICODE 和 _MBCS 未定義 |
_MBCS 已定義 |
_UNICODE 已定義 |
---|---|---|---|
_taccess |
_access |
_access |
_waccess |
需求
常式 | 必要的標頭 | 選擇性標頭 |
---|---|---|
_access |
<io.h> |
<errno.h> |
_waccess |
<wchar.h> 或 <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" );
}
}
File crt_ACCESS.C exists.
File crt_ACCESS.C does not have write permission.
另請參閱
檔案處理
_chmod
, _wchmod
_fstat
、、_fstat32
_fstat64
、_fstati64
、、_fstat32i64
、_fstat64i32
_open
, _wopen
_stat
、_wstat
函式