_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" );
}
}