GetFileAttributes() 原型如下:
[C++] 纯文本查看 复制代码 DWORD WINAPI GetFileAttributes(
__in LPCTSTR lpFileName
);
该函数用来获取文件或目录的系统属性。
参数 lpFileName 表示需要获取属性的文件或目录。如果函数执行成功,返回表示属性的 DWORD 值;返回 INVALID_FILE_ATTRIBUTES 则表明获取失败,可以用 GetLastError() 来获取错误信息。
测试代码:
[C++] 纯文本查看 复制代码 #include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "chs");
DWORD dwFileAtt;
dwFileAtt = GetFileAttributes(argv[1]);
if (dwFileAtt == INVALID_FILE_ATTRIBUTES) {
_tprintf (TEXT("获取错误: %d\n"), GetLastError());
return (-1);
}
_tprintf (TEXT("%s 属性\n---------------------------\n"), argv[1]);
if (dwFileAtt & FILE_ATTRIBUTE_ARCHIVE) {
_tprintf (TEXT("<存档> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_COMPRESSED) {
_tprintf (TEXT("<压缩> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_DIRECTORY) {
_tprintf (TEXT("<目录> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_ENCRYPTED) {
_tprintf (TEXT("<加密> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_HIDDEN) {
_tprintf (TEXT("<隐藏> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_NORMAL) {
_tprintf (TEXT("<普通> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_NOT_CONTENT_INDEXED) {
_tprintf (TEXT("<非内容索引服务> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_OFFLINE) {
_tprintf (TEXT("<脱机> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_OFFLINE) {
_tprintf (TEXT("<离线> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_READONLY) {
_tprintf (TEXT("<只读> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_REPARSE_POINT) {
_tprintf (TEXT("<再解析或符号链接> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_SPARSE_FILE) {
_tprintf (TEXT("<再解析> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_SYSTEM) {
_tprintf (TEXT("<系统> "));
}
if (dwFileAtt & FILE_ATTRIBUTE_TEMPORARY) {
_tprintf (TEXT("<临时> "));
}
return 0;
}
运行输出:D:\WinAPI\GetFileAtttributes\Debug>GetFileAtttributes.exe c:\windows\bootstat.dat
c:\windows\bootstat.dat 属性
---------------------------
<存档> <系统>
D:\WinAPI\GetFileAtttributes\Debug>GetFileAtttributes.exe b:\cache\data_0
b:\cache\data_0 属性
---------------------------
<存档> <非内容索引服务> |