_access _waccess
判斷檔案是否唯讀與否。 更安全版本都可使用; see _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 |
唯寫屬性 |
04 |
唯讀 |
06 |
讀取和寫入 |
這個函式只會檢查檔案及目錄是否為唯讀,它並不會檢查檔案系統的安全性設定。 您必須對存取權杖。 如需有關檔案系統安全性的詳細資訊,請參閱的存取權杖。 ATL 類別可用來提供這項功能。 see CAccessToken 類別.
_waccess寬字元版本的**_access**。 path引數為**_waccess是寬字元字串。 _waccess與_access**其他方式完全相同。
這個函式會驗證它的參數。 如果path是NULL或mode並未指定有效的模式中,不正確的參數處理常式會叫用,如所述參數驗證。 如果執行,則允許繼續執行,此函式會將errno到EINVAL ,並傳回-1。
泛用文字常式對應
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" );
}
}
.NET Framework 對等用法
請參閱
參考
_fstat、 _fstat32、 _fstat64、 _fstati64、 _fstat32i64、 _fstat64i32