NSFileManager 文件属性字典 Key & Value)

1 阅读3分钟

Foundation 文件属性常量完整释义(macOS / iOS NSFileManager 文件属性字典 Key & Value)

一、基础类型相关

1. NSFileType

属性Key,用于获取文件类型,对应值是下面 NSFileAttributeType 系列常量。

NSDictionary *attr = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil];
NSString *fileType = attr[NSFileType];

文件类型枚举值(NSFileAttributeType

  1. NSFileTypeDirectory:文件夹 / 目录
  2. NSFileTypeRegular:普通文件(文本、图片、二进制等常规文件)
  3. NSFileTypeSymbolicLink:软链接(符号链接)
  4. NSFileTypeSocket:Unix 域套接字文件
  5. NSFileTypeCharacterSpecial:字符设备文件(如 /dev/tty 终端)
  6. NSFileTypeBlockSpecial:块设备文件(磁盘、分区设备)
  7. NSFileTypeUnknown:无法识别的未知文件类型

二、文件基础信息属性 Key

  1. NSFileSize 文件大小,返回 NSNumber(unsignedLongLong),单位:字节。

  2. NSFileModificationDate 文件最后修改时间,返回 NSDate

  3. NSFileCreationDate 文件创建时间,返回 NSDate(macOS 完善,iOS沙盒有效)。

  4. NSFileReferenceCount 文件硬链接计数,对应 Unix nlink

  5. NSFileDeviceIdentifier 文件所在磁盘设备 ID,区分不同分区/磁盘。

  6. NSFileSystemNumber 文件系统编号(dev),同分区文件此值相同。

  7. NSFileSystemFileNumber 文件 inode 号,同一分区内唯一标识文件。


三、权限、属主相关

  1. NSFileOwnerAccountName 文件所有者用户名(字符串,如 rootmobile)。

  2. NSFileOwnerAccountID 所有者 UID,NSNumber 数字。

  3. NSFileGroupOwnerAccountName 文件所属用户组名称。

  4. NSFileGroupOwnerAccountID 所属组 GID,NSNumber

  5. NSFilePosixPermissions POSIX 文件权限,八进制权限数值(如 0644、0755),NSNumber(short)


四、文件隐藏、锁定、特殊标记

  1. NSFileExtensionHidden 布尔值 NSNumber(BOOL),是否隐藏文件后缀名(访达“隐藏扩展名”)。

  2. NSFileHFSCreatorCode / NSFileHFSTypeCode 旧 HFS 资源分支:创建者代码、文件类型代码,现代系统基本废弃。

  3. NSFileImmutable 文件锁定标记(锁定后无法删除/修改),BOOL。

  4. NSFileAppendOnly 仅追加权限,只能写入尾部、不能覆盖原有内容,BOOL。

  5. NSFileBusy 文件是否被占用(正在使用),BOOL。


五、数据保护(iOS 沙盒加密,NSFileProtectionKey)

Key:NSFileProtectionKey

获取/设置文件加密保护等级,仅 iOS/watchOS/tvOS 核心,macOS 支持有限。 对应取值 NSFileProtectionType

  1. NSFileProtectionNone 无加密,设备锁屏仍可读取,最低安全等级。

  2. NSFileProtectionComplete 最高加密:设备锁屏后系统无法访问文件,解锁后才可读写。

  3. NSFileProtectionCompleteUnlessOpen 文件打开状态下,锁屏仍可读写;关闭后锁屏即加密不可访问。

  4. NSFileProtectionCompleteUntilFirstUserAuthentication 首次解锁前加密;解锁一次后,即便再次锁屏也可持续访问(App 默认策略)。

  5. NSFileProtectionCompleteWhenUserInactive iOS17+` 用户长时间不操作(锁屏闲置)后加密,活跃状态可正常读写,macOS 不可用。

作用:敏感数据(账号、隐私)设置高保护等级,防止锁屏后被磁盘提取。


六、文件系统分区整体信息(磁盘空间)

这一组是整个分区/磁盘的属性,不能单文件查询,用 attributesOfFileSystemForPath: 获取。

  1. NSFileSystemSize 分区总容量,字节,NSNumber(unsignedLongLong)

  2. NSFileSystemFreeSize 分区剩余可用空间,字节。

  3. NSFileSystemNodes 分区总 inode 数量(最大文件总数上限)。

  4. NSFileSystemFreeNodes 剩余可用 inode 数量。

使用区分小提示

  1. 单文件信息:attributesOfItemAtPath:error:,可用上面除文件系统外所有 Key;
  2. 磁盘分区空间:attributesOfFileSystemForPath:error:,仅用 NSFileSystemXXX 系列;
  3. 文件保护属性仅 iOS 沙盒生效,macOS 权限逻辑不同。