在iOS设备中,APP的数据存储采用了SandBox(沙盒)机制。
应用的沙盒
目录结构
每个iOS应用都有自己应用的沙盒,沙盒的目录结构如下图所示:
目录结构.png应用的沙盒下共有三个文件夹:Documents、Library、tmp,Library文件夹下有两个子文件夹:Caches、Preferences。
目录分析:
- Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。应用开启iTunes文件分享后,用户可在iTunes中看到该文件夹下内容,还可以更新该文件夹中文件。
应用程序启用iTunes文件分享功能:Info.plist文件添加如图键值:
文件分享键值添加.png
- Library/Caches:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据,例如:缓存数据
- Library/Preferences:存储应用程序偏好设置的plist文件,NSUserDefaults存储的内容在该目录下。
- tmp:存储临时文件,在不需要这些文件时,应用要负责删除tmp中文件,以免占用文件系统的空间。
目录获取
- 根目录:
NSString *home = NSHomeDirectory();
- Documents目录:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// NSDocumentDirectory 表明正在查找Documents目录的路径
// NSUserDomainMask 表明搜索限制在应用的沙盒内
NSString *documentPath = paths[0];
// 每个应用只有一个Documents目录,因此只有一个目录符合条件
- Library/Caches目录:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *documentPath = paths[0];
- Library/Preferences目录:使用NSUserDefaults直接存储到该目录下
- tmp目录:
NSString *tmpPath = NSTemporaryDirectory();
网友评论