文件属性
文件属性
在 GIO 中,文件属性由一系列键值对组成。
键是包含键命名空间和键名称的字符串,它们由冒号分隔,例如 namespace::keyname
。命名空间包括在内,以按命名空间对键值对进行排序,以便相关。可以使用通配符检索键,例如 standard::*
将返回 standard
命名空间中的所有键。
一个文件系统(通过 GFile
指向)的可能属性列表作为 GFileAttributeInfoList
提供使用。此列表可以通过先前指示的键名称进行查询。
信息存储在 GFileAttributeInfo
结构中。信息结构可以存储不同类型的枚举 GFileAttributeType
中列出。在创建 GFileAttributeInfo
时,类型将设置为 G_FILE_ATTRIBUTE_TYPE_INVALID
。
实现 GFile
的类将创建 GFileAttributeInfoList
并为其所提供的文件系统、架构和其他可能的实现详细信息(例如,在 UNIX 系统上,将注册特定文件的 USER ID 的文件属性键)安装默认键和值。
默认命名空间
"standard"
:'标准' 命名空间。任何应用程序可能需要的一般文件信息应放入此命名空间中。例如,包括文件的名称、类型和大小。"etag"
:实体标签命名空间。目前,此命名空间中唯一的键是value
,它包含当前实体标签的值。"id"
:'标识' 命名空间。此命名空间由文件管理器和列出目录的应用程序用于检查循环和唯一识别文件。"access"
:'访问' 命名空间。用于检查用户是否具有访问文件和执行文件操作的适当权限。此命名空间中的键旨在通用且易于理解,例如,如果当前用户具有读取文件的权限,则can_read
键为 true。应在 Windows 上的 UNIX 权限和 NTFS ACLs 上映射这些值。"mountable"
:'可安装' 命名空间。包括用于检查文件或路径是否支持安装操作(例如安装、卸载、弹出)的简单布尔键。这些用于类型为G_FILE_TYPE_MOUNTABLE
的文件。"time"
:'时间' 命名空间。包括文件访问、更改、创建时间。"unix"
:'UNIX' 命名空间。包括 UNIX 特定信息和可能对所有文件不可用。例如,包括 UNIX 的 UID、GID 等。"dos"
:'DOS' 命名空间。包括 DOS 特定信息,可能对所有文件不可用。例如,包括用于检查文件是否标记为系统文件(is_system
)和归档文件(is_archive
)的键。"owner"
:‘所有者’命名空间。包含有关文件所有者的信息。可能不是所有文件系统都可用。例如,用于获取文件所有者用户名的user
。这些信息通常是从某些后端特定数据(如 UNIX UID)映射过来的。"thumbnail"
:‘缩略图’命名空间。包含有关文件缩略图及其在文件系统中的位置的信息。此命名空间中的键示例包括path
(获取缩略图的位置),failed
(检查缩略图是否失败),以及is-valid
(检查缩略图是否过时)。"filesystem"
:‘文件系统’命名空间。获取有关文件所在文件系统的信息,例如其类型、剩余空间量以及文件系统的总体大小。"gvfs"
:‘GVFS’命名空间。此命名空间中的键包含有关当前使用的 GVFS 后端的信息。"xattr"
:‘xattr’命名空间。获取有关扩展用户属性的信息。参见attr(5)
。在构建此命名空间中的键时,会移除扩展用户属性名称的前缀user.
,例如,对于名为user.mime_type
的扩展属性,使用xattr::mime_type
。请注意,仅在 GLib 与扩展属性支持一起构建时,此信息才可用。"xattr-sys"
:‘xattr-sys’命名空间。获取有关非用户特定扩展属性的信息。参见attr(5)
。请注意,仅在 GLib 与扩展属性支持一起构建时,此信息才可用。"selinux"
:‘SELinux’命名空间。包含有关文件 SELinux 上下文的信息。请注意,仅当 GLib 与 SELinux 支持一起构建时,此信息才可用。
请注意,这并非所有可能的命名空间。还可以通过 GIO 模块或单独的应用程序添加更多命名空间。有关编写 GIO 模块的信息,请参见 GIOModule
。
默认键
有关内置键及其类型的列表,请参阅 GFileInfo
文档。
请注意,在 xattr
和 xattr-sys
命名空间中没有预定义的键。构建 xattr
命名空间中的键时,会移除扩展用户属性的前缀 user.
并在前面加上 xattr::
。构建 xattr-sys
命名空间中的键时,将 xattr-sys::
与扩展属性名称连接。所有扩展属性值均以十六进制编码的字符串返回,其中超过 ASCII 范围的字节编码为形式为 \xnn
的转义序列,其中 nn
是一个两位十六进制数字。