Foundation 文件属性常量完整释义(macOS / iOS NSFileManager 文件属性字典 Key & Value)
一、基础类型相关
1. NSFileType
属性Key,用于获取文件类型,对应值是下面 NSFileAttributeType 系列常量。
NSDictionary *attr = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil];
NSString *fileType = attr[NSFileType];
文件类型枚举值(NSFileAttributeType)
NSFileTypeDirectory:文件夹 / 目录NSFileTypeRegular:普通文件(文本、图片、二进制等常规文件)NSFileTypeSymbolicLink:软链接(符号链接)NSFileTypeSocket:Unix 域套接字文件NSFileTypeCharacterSpecial:字符设备文件(如 /dev/tty 终端)NSFileTypeBlockSpecial:块设备文件(磁盘、分区设备)NSFileTypeUnknown:无法识别的未知文件类型
二、文件基础信息属性 Key
-
NSFileSize文件大小,返回NSNumber(unsignedLongLong),单位:字节。 -
NSFileModificationDate文件最后修改时间,返回NSDate。 -
NSFileCreationDate文件创建时间,返回NSDate(macOS 完善,iOS沙盒有效)。 -
NSFileReferenceCount文件硬链接计数,对应 Unixnlink。 -
NSFileDeviceIdentifier文件所在磁盘设备 ID,区分不同分区/磁盘。 -
NSFileSystemNumber文件系统编号(dev),同分区文件此值相同。 -
NSFileSystemFileNumber文件 inode 号,同一分区内唯一标识文件。
三、权限、属主相关
-
NSFileOwnerAccountName文件所有者用户名(字符串,如root、mobile)。 -
NSFileOwnerAccountID所有者 UID,NSNumber数字。 -
NSFileGroupOwnerAccountName文件所属用户组名称。 -
NSFileGroupOwnerAccountID所属组 GID,NSNumber。 -
NSFilePosixPermissionsPOSIX 文件权限,八进制权限数值(如 0644、0755),NSNumber(short)。
四、文件隐藏、锁定、特殊标记
-
NSFileExtensionHidden布尔值NSNumber(BOOL),是否隐藏文件后缀名(访达“隐藏扩展名”)。 -
NSFileHFSCreatorCode/NSFileHFSTypeCode旧 HFS 资源分支:创建者代码、文件类型代码,现代系统基本废弃。 -
NSFileImmutable文件锁定标记(锁定后无法删除/修改),BOOL。 -
NSFileAppendOnly仅追加权限,只能写入尾部、不能覆盖原有内容,BOOL。 -
NSFileBusy文件是否被占用(正在使用),BOOL。
五、数据保护(iOS 沙盒加密,NSFileProtectionKey)
Key:NSFileProtectionKey
获取/设置文件加密保护等级,仅 iOS/watchOS/tvOS 核心,macOS 支持有限。
对应取值 NSFileProtectionType:
-
NSFileProtectionNone无加密,设备锁屏仍可读取,最低安全等级。 -
NSFileProtectionComplete最高加密:设备锁屏后系统无法访问文件,解锁后才可读写。 -
NSFileProtectionCompleteUnlessOpen文件打开状态下,锁屏仍可读写;关闭后锁屏即加密不可访问。 -
NSFileProtectionCompleteUntilFirstUserAuthentication首次解锁前加密;解锁一次后,即便再次锁屏也可持续访问(App 默认策略)。 -
NSFileProtectionCompleteWhenUserInactiveiOS17+` 用户长时间不操作(锁屏闲置)后加密,活跃状态可正常读写,macOS 不可用。
作用:敏感数据(账号、隐私)设置高保护等级,防止锁屏后被磁盘提取。
六、文件系统分区整体信息(磁盘空间)
这一组是整个分区/磁盘的属性,不能单文件查询,用 attributesOfFileSystemForPath: 获取。
-
NSFileSystemSize分区总容量,字节,NSNumber(unsignedLongLong)。 -
NSFileSystemFreeSize分区剩余可用空间,字节。 -
NSFileSystemNodes分区总 inode 数量(最大文件总数上限)。 -
NSFileSystemFreeNodes剩余可用 inode 数量。
使用区分小提示
- 单文件信息:
attributesOfItemAtPath:error:,可用上面除文件系统外所有 Key; - 磁盘分区空间:
attributesOfFileSystemForPath:error:,仅用NSFileSystemXXX系列; - 文件保护属性仅 iOS 沙盒生效,macOS 权限逻辑不同。