文件属性常量

文件属性常量定义文件系统存储在磁盘上的元数据值,由系统使用,并通过各种文件 I/O API 供开发人员使用。 这些常量允许开发人员检查和设置文件属性,例如只读、隐藏或压缩属性。 有关相关 API 和主题的列表,请参阅 “另请参阅 ”部分。

Example

FILE_BASIC_INFO basicInfo;
    BOOL result;

    result = GetFileInformationByHandleEx( hFile,
                                               FileBasicInfo,
                                               &basicInfo,
                                               sizeof(basicInfo));

\\...

printf("  File Attributes: ");
    PrintFileAttributes(basicInfo.FileAttributes);

\\...
VOID
PrintFileAttributes(
    ULONG FileAttributes
    )
{
    
    if (FileAttributes & FILE_ATTRIBUTE_ARCHIVE) {
        printf("Archive ");
    }
    if (FileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
        printf("Directory ");
    }
    if (FileAttributes & FILE_ATTRIBUTE_READONLY) {
        printf("Read-Only ");
    }
}

从 GitHub 上的 Windows 经典示例获取的示例

常量/值 Description
FILE_ATTRIBUTE_READONLY
1 (0x00000001)
只读文件。 应用程序可以读取文件,但无法写入文件或删除该文件。 在目录上不遵循此属性。
FILE_ATTRIBUTE_HIDDEN
2 (0x00000002)
文件或目录已隐藏。 它不包括在普通目录列表中。
FILE_ATTRIBUTE_SYSTEM
4 (0x00000004)
作系统使用部分或独占使用的文件或目录。
FILE_ATTRIBUTE_DIRECTORY
16 (0x00000010)
标识目录的句柄。
FILE_ATTRIBUTE_ARCHIVE
32 (0x00000020)
作为存档文件或目录的文件或目录。 应用程序通常使用此属性标记文件以供备份或删除。
FILE_ATTRIBUTE_DEVICE
64 (0x00000040)
此值保留供系统使用。
FILE_ATTRIBUTE_NORMAL
128 (0x00000080)
未设置其他属性的文件。 此属性仅在单独使用时才有效。
FILE_ATTRIBUTE_TEMPORARY
256 (0x00000100)
用于临时存储的文件。 如果有足够的缓存内存可用,文件系统会避免将数据写回到大容量存储,因为通常,应用程序在关闭句柄后删除临时文件。 在这种情况下,系统可以完全避免写入数据。 否则,在句柄关闭后写入数据。
FILE_ATTRIBUTE_SPARSE_FILE
512 (0x00000200)
一个稀疏文件的文件。
FILE_ATTRIBUTE_REPARSE_POINT
1024 (0x00000400)
具有关联的重新分析点的文件或目录,或作为符号链接的文件。
FILE_ATTRIBUTE_COMPRESSED
2048 (0x00000800)
压缩的文件或目录。 对于文件,文件中的所有数据都会压缩。 对于目录,压缩是新创建的文件和子目录的默认值。
FILE_ATTRIBUTE_OFFLINE
4096 (0x00001000)
文件的数据不能立即可用。 此属性指示文件数据在物理上移动到脱机存储。 此属性由远程存储使用,这是分层存储管理软件。 应用程序不应任意更改此属性。
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
8192 (0x00002000)
文件或目录不由内容索引服务编制索引。
FILE_ATTRIBUTE_ENCRYPTED
16384 (0x00004000)
已加密的文件或目录。 对于文件,文件中的所有数据流均已加密。 对于目录,加密是新创建的文件和子目录的默认值。
FILE_ATTRIBUTE_INTEGRITY_STREAM
32768 (0x00008000)
目录或用户数据流配置为完整性(仅在 ReFS 卷上受支持)。 它不包括在普通目录列表中。 如果文件已重命名,则完整性设置将保留。 如果复制文件,则目标文件将具有完整性集(如果源文件或目标目录具有完整性集)。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 在 Windows Server 2012 之前不支持此标志。
FILE_ATTRIBUTE_VIRTUAL
65536 (0x00010000)
此值保留供系统使用。
FILE_ATTRIBUTE_NO_SCRUB_DATA
131072(0x00020000)
要由后台数据完整性扫描程序(AKA 清理器)读取的用户数据流。 在目录上设置时,它仅提供继承。 此标志仅在存储空间和 ReFS 卷上受支持。 它不包括在普通目录列表中。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 在 Windows 8 和 Windows Server 2012 之前不支持此标志。
FILE_ATTRIBUTE_EA
262144(0x00040000)
具有扩展属性的文件或目录。

重要: 此常量仅用于内部使用。
FILE_ATTRIBUTE_PINNED
524288(0x00080000)
此属性指示即使未主动访问,文件或目录也应完全存在于本地。 此属性用于分层存储管理软件。
FILE_ATTRIBUTE_UNPINNED
1048576 (0x00100000)
此属性指示除非主动访问,否则不应在本地完全保留文件或目录。 此属性用于分层存储管理软件。
FILE_ATTRIBUTE_RECALL_ON_OPEN
262144(0x00040000)
此属性仅在目录枚举类(FILE_DIRECTORY_INFORMATION、FILE_BOTH_DIR_INFORMATION等)中出现。 设置此属性时,表示文件或目录在本地系统上没有物理表示形式;该项为虚拟项。 打开该项的成本将比正常值更高,例如,它至少会导致从远程存储中提取其中一些项。
FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS
4194304(0x00400000)
设置此属性时,表示文件或目录未完全存在于本地。 对于一个文件,这意味着并非所有数据都位于本地存储上(例如,它可能稀疏,某些数据仍在远程存储中)。 对于目录,这意味着某些目录内容正在从另一个位置虚拟化。 读取文件/枚举目录的成本将比普通的要高,例如,它将导致至少从远程存储中提取一些文件/目录内容。 只有内核模式调用方才能设置此位。

文件系统微型筛选器低于 180000 – 189999高度范围(FSFilter HSM 加载顺序组)不得对设置了此属性的文件发出目标缓存的读取或写入。 这可能会导致缓存污染和潜在的文件损坏。 有关详细信息,请参阅 “处理占位符”。

要求

Requirement 价值
支持的最低客户端 Windows XP [仅限桌面应用]
支持的最低服务器 Windows Server 2003 [仅限桌面应用]
Header WinNT.h (包括 Windows.h)

另请参阅

压缩属性

创建和打开文件

CreateFile

CreateFileTransacted

GetFileAttributes

GetFileAttributesEx

GetFileAttributesTransacted

GetFileInformationByHandle

GetFileInformationByHandleEx

SetFileAttributes

SetFileAttributesTransacted

SetFileInformationByHandle

Windows 中的文件资源管理器