判斷檔案是否為唯讀。 提供更安全的版本;請參閱 _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 函式