文章

iOS File System

iOS 文件系统

iOS File System

iOS 文件系统

49年入国军,千元买个二手果。遂发觉这系统的存储需求,比起安卓那增长的不是一点半点。

可为什么体感上256的果比安卓的更禁用呢?

而且感觉每个app都有一个独立空间
同一个文件多个app需要访问时
就需要往自己的碗里复制一份
这存储占用岂不是超级加倍

沙盒机制

先看看iOS的沙盒机制吧。
iOS给每个app都分配独立容器,即沙盒。
这会让每个app各占一块地 但相应的也会更安全、更隐私、更稳定、更容易管理。

资源结构

每个app的基本文件资源组成

  • 安卓包本体
  • 用户文档
  • 缓存文件
  • 离线资源
  • 数据库、日志、临时文件
  • 媒体缓存,比如图片、视频、音频

而沙盒内部则把这些分为以下几类目录进行分类

目录 用途 是否容易被系统清理
Documents 用户重要文件 不自动清,会备份
Library/Caches 缓存 空间不足时可能被清
tmp 临时文件 重启或空闲时可能被清
App 本体 可执行文件和资源 卸载/卸载 App 时移除

iOS并不会让你想Windows文件系统那样让你的程序自由浏览整个文件系统,而是采用“安全隔离+抽象入口+自动管理”来换体验。

看到这里 我又想到Windows系统下有个硬链接的机制

APFS克隆和硬链接

维度 Windows/Linux 硬链接 iOS/macOS 的 APFS 克隆
底层机制 多个目录项指向同一个 inode 两个文件共享相同数据块,但 inode 独立
修改行为 修改任意一端,另一端也会变 修改时才分离被改部分,未改部分仍共享
元数据 通常共享同一文件记录 每个克隆体有独立元数据
用户感知 像“同一个文件多个名字” 像“两个独立文件,但初始不占额外空间”
适用场景 节省空间、强耦合引用 副本、快照、备份、App 资源复用
本文由作者按照 CC BY 4.0 进行授权