iOS Standard Directories: Where Files Reside
出于安全考虑,iOS 应用程序与文件系统的交互仅限于应用程序的沙盒目录内的目录。
在下载新 App 期间,下载器会在 App 的沙盒目录中创建大量的容器目录(container directories),每个容器目录都有一个特定的规则。
- bundle 容器目录持有 App 的 bundle
- data 容器目录持有 App 和用户的数据
- App 也可以在运行时请求访问额外的容器目录,比如 iCloud 容器目录
App 通常不允许在容器目录外访问或创建文件。一个例外是当 App 使用公开的系统接口去访问例如用户的通讯录和音乐。在这些情况下,系统框架使用辅助应用程序来处理从适当的数据存储中读取或修改所需的任何与文件相关的操作。
下面的列表列出了一些重要的子目录以及它们期望的用法。该表还描述了每个子目录的额外访问限制,并指出该目录的内容是否由 iTunes 和 iCloud 备份。
| Directory | Description |
|---|---|
| AppName.app | 这个是 App 的 bundle。这个目录包含了 App 中所有的资源。你不可以对这个目录进行写入操作。为了防止干预,bundle 目录在安装时以及被签名。写入这个目录会修改签名并阻止 App 启动。你只能在 App bundle 中获取任何资源的读取权限。**这个目录下的内容不会被 iTunes 和 iCloud 备份。**然而,iTunes 确实会对从 App Store 购买的任何应用程序进行初始同步。 |
| Documents/ | 使用这个目录去存储用户一般的内容。该目录的内容可以通过文件共享提供给用户。因此,该目录应该只包含您可能希望向用户公开的文件。此目录的内容会被 iTunes 和 iCloud 备份。 |
| Documents/Inbox | 使用这个目录来访问 App 被外部实体要求打开的文件。具体来说,具体来说,邮件程序将与您的应用程序关联的电子邮件附件放置在这个目录中。文档交互控制器也可以在其中放置文件。您的应用程序可以读取和删除该目录中的文件,但不能创建新文件或写入现有文件。如果用户试图编辑这个目录中的文件,App 必须在进行任何更改之前悄悄地将其移出该目录。此目录的内容会被 iTunes 和 iCloud 备份。 |
| Library/ | 这是所有非用户数据文件的顶级目录。通常将文件放在几个标准子目录中的一个。iOS Apps 通常使用 Application Support 和 Caches 子目录。然而,您可以创建自定义子目录。对于您不想公开给用户的任何文件,请使用 Library 子目录。您的 App 不应该使用这些目录来存放用户数据文件。Library 目录中的子目录(除了 Caches 子目录)都会被 iTunes 和 iCloud 备份。 |
| tmp/ | 使用这个目录来写临时文件,这些文件不需要在 App 启动之间持久保存。当文件不再需要时,你的 App 应该从这个目录中删除它们; 然而,当你的应用程序不运行时,系统可能会清除这个目录。这个目录下的内容不会被 iTunes 和 iCloud 备份。 |
Where You Should Put Your App’s Files
为了防止 iOS 设备上的同步和备份过程花费很长时间,请有选择地放置文件。存储大文件的 App 会减慢向 iTunes 或 iCloud 备份的过程。这些 App 还会消耗用户大量的可用存储空间,这可能会促使用户删除该 App 或禁用该 App 数据到 iCloud 的备份。考虑到这一点,您应该按照以下指导原则存储应用程序数据:
- 将用户数据放到 Documents/. 用户数据通常包含任何你可能想要暴露给用户的文件——您可能希望用户创建、导入、删除或编辑的任何内容。对于绘图应用程序,用户数据包括用户可能创建的任何图形文件。对于文本编辑器,它包含文本文件。视频和音频应用程序甚至可能包含用户下载来稍后观看或收听的文件。
- 将 app-created 的 support files 放到 Library/Application support/ 目录下。通常,该目录包含应用程序运行时使用的文件,但应该对用户保持隐藏。这个目录还可以包括数据文件、配置文件、模板和从app bundle加载的资源的修改版本。
- 记住,Documents/ 和 Application Support/ 中的文件在默认情况下是备份的。你可通过调用
-[NSURL setResourceValue:forKey:error:]使用NSURLIsExcludedFromBackupKey来将文件从备份中排除。任何可以重新创建或下载的文件必须从备份中排除。这对于大型媒体文件尤其重要。如果您的应用程序下载了视频或音频文件,请确保它们没有包含在备份中。 - 将临时数据放在 tmp/ 目录中。临时数据包括不需要长期保存的任何数据。记得在使用完这些文件后删除它们,这样它们就不会继续占用用户设备上的空间。当应用程序不运行时,系统会定期清除这些文件;因此,您不能依赖这些文件在您的应用程序终止后持久化。
- 将数据缓存文件放到 Library/Cache/ 目录下。缓存数据可用于任何需要比临时数据持久的数据,但不需要像 Support file 那样持久。一般来说,应用程序不需要缓存数据来正常运行,但是它可以使用缓存数据来提高性能。缓存数据的例子包括(但不限于)数据库缓存文件和临时的可下载内容。请注意,系统可能会删除缓存/目录以释放磁盘空间,因此您的应用程序在需要的时候必须能够重新创建或下载这些文件。
生词
transient [ˈtrænʃnt] adj. 短暂的;路过的
period [ˈpɪriəd] n. 时期;一段时间;
extended [ɪkˈstendɪd] adj. 延伸的;扩大的;长期的;广大的
comprise [kəmˈpraɪz] vt. 包含;由…组成
exclude [ɪkˈskluːd] vt. 排除;排斥;拒绝接纳;逐出
encourage [ɪnˈkɜːrɪdʒ] vt. 鼓励,怂恿;激励;支持
consume [kənˈsuːm] vt. 消耗,消费;使…着迷;挥霍
purge [pɜːrdʒ] v. 清除
expose [ɪkˈspoʊz] vt. 揭露,揭发;使曝光;显示
gain [ɡein] vt. 获得;增加;赚到 n. 增加;利润;收获
tampering [ˈtæmpərɪŋ] n. 干预;贿赂
prevent [prɪˈvent] vt. 预防,防止;阻止
restriction [rɪˈstrɪkʃn] n. 限制;约束;束缚
usage [ˈjuːsɪdʒ] n. 使用;用法;惯例
intended [ɪnˈtendɪd] adj. 故意的,有意的;打算中的;为……打算(或设计)的
exception [ɪkˈsepʃn] n. 例外;异议
prohibit [prəˈhɪbɪt] vt. 阻止,禁止
generally [ˈdʒenrəli] adv. 通常;普遍地,一般地
representation [ˌreprɪzenˈteɪʃn] n. 代表;表现;表示法;陈述
primary [ˈpraɪmeri] adj. 主要的;初级的;基本的 n. 原色;最主要者
constitute [ˈkɑːnstɪtuːt] vt. 组成,构成;建立;任命
access [ˈækses] n. 通道;入口 v. 接近,使用;访问,存取(电脑文档)
additional [əˈdɪʃənl] adj. 附加的,额外的
hold [hoʊld] vt. 持有;拥有;保存;拘留;约束或控制;召开,举行 vi. 支持;有效;持续
handle [ˈhændl] 处理;应付
persistent [pərˈsɪstənt] 持续的;持久的
storage [ˈstɔːrɪdʒ] 存储;仓库
associated [əˈsoʊʃieɪtɪd] 关联的
Therefore [ˈðerfɔːr] 因此;所以
fundamental [ˌfʌndəˈmentl] 基本的;根本的
regardless [rɪˈɡɑːrdləs] 不管的;不顾的
underlying [ˌʌndərˈlaɪɪŋ] 根本的;在下面的;
format [ˈfɔːrmæt] 格式
physically [ˈfɪzɪkli] 肉体地,身体上地;依据自然规律,按自然法则;根本上
contribute [kənˈtrɪbjuːt] 贡献,出力;投稿;捐献
millions n. 数百万
hierarchical [ˌhaɪəˈrɑːrkɪkl] adj. 分层的;等级体系的
structure [ˈstrʌktʃər] n. 结构;构造;建筑物 vt. 组织;构成;建造
interact [ˌɪntərˈækt] vt. 互相影响;互相作用 vi. 互相影响;互相作用
aside [əˈsaɪd] adv. 离开,撇开;在旁边 n. 旁白;私语,悄悄话;离题的话
tenet [ˈtenɪt] n. 原则;信条;教义
appropriate [əˈproʊpriət] adj. 适当的;恰当的;合适的
security [sɪˈkjʊrəti] n. 安全,安全性;保证;证券;抵押品 adj. 安全的;保安的;保密的
privilege [ˈprɪvəlɪdʒ] n. 特权;优待 vt. 给予…特权;特免
expect [ɪkˈspekt] vt. 期望;指望;认为;预料 vi. 期待;预期
citizen [ˈsɪtɪzn] n. 公民;市民;老百姓
precisely [prɪˈsaɪsli] adv. 精确地;恰恰
overarching [ˌoʊvərˈɑːrtʃɪŋ] adj. 首要的;支配一切的;包罗万象的
remain [rɪˈmeɪn] vi. 保持;依然;留下;剩余;逗留;残存 n. 遗迹;剩余物,残骸
internally [ɪnˈtɜːrnəli] adv. 内部地;国内地;内在地
convention [kənˈvenʃn] n. 大会;[法] 惯例;[计] 约定;[法] 协定;习俗
reside [rɪˈzaɪd] vi. 住,居住;属于
specific [spəˈsɪfɪk] adj. 特殊的,特定的;明确的;详细的;[药] 具有特效的 n. 特性;细节;特效药
短语
associated with 与…有关系;与…相联系
regardless of 不管,不顾
attached to 附属于
plugged in 插入
interact with 与……相互作用
aside from 除…以外
a number of 大量的