_access、_waccess

确定文件是否为只读的。 更多安全版本可用;请参见 _access_s、_waccess_s

int _access( 
   const char *path, 
   int mode 
);
int _waccess( 
   const wchar_t *path, 
   int mode 
);

参数

  • path
    文件或目录路径。

  • mode
    读/写特性。

返回值

如果文件包含特定模式,每个函数返回 0。 函数返回 - 1,则名称文件不存在或不具有特定模式;在这种情况下,如下表errno 所示设置。

  • EACCES
    访问被拒绝:文件权限的设置不允许指定的访问权限。

  • ENOENT
    未找到文件名或路径。

  • EINVAL
    无效参数。

有关这些属性和其他的更多信息返回代码示例,请参见 _doserrno、errno、_sys_errlist 和 _sys_nerr

备注

当使用文件,_access 函数确定指定的文件或目录是否存在并且具有指定值的特性 mode。 在使用与目录,_access 确定指定的目录是否存在;只有在 Windows 2000 和更高版本的操作系统上,所有目录读取和写入权限。

mode 值

检查文件。

00

仅存在

02

Write-only

04

只读

06

读取和写入

此函数只检查是否文件和目录是只读的,则不检查文件系统安全设置。 这对于需要访问标记。 有关文件系统安全性的更多信息,请参见 访问标记。 ATL 类存在用于提供此功能;参见 CAccessToken 类

_waccess_access 的宽字符版本;_waccess 的 path 参数是宽字符字符串。 _waccess_access 行为相同,否则。

此函数验证其参数。 如果 path 为 NULL 或 mode 不指定有效的模式,无效参数处理程序,如 参数验证所述。 如果允许执行继续,则该函数将 errno 设置为 EINVAL并返回。

一般文本例程映射

Tchar.h 例程

未定义 _UNICODE 和 _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" );
    }
}
  

.NET Framework 等效项

FileAccess

请参见

参考

文件处理

_chmod、_wchmod

_fstat、_fstat32、_fstat64、_fstati64、_fstat32i64、_fstat64i32

_open、_wopen

_stat、_wstat 函数