曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5081|回复: 0
打印 上一主题 下一主题

[文件与IO] GetFileAttributes() -- 获取文件或目录属性

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2012-2-16 20:04:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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 属性
---------------------------
<存档> <非内容索引服务>
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 17:14 , Processed in 0.063930 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表