简介:
每个ios的应用程序都会有自己的沙盒,这个沙盒就是文件目录。
特点:
1.每个应用程序的活动范围都限定在自己的沙盒里
2.不能随意跨越自己的沙盒去访问别的应用程序沙盒中的内容
(iOS8已经部分开放访问extension)
3.在访问别人沙盒内的数据时需要访问权限。
好处:APP之间不能相互通,唯独可以通过URL Scheme可以通信, 比较安全!沙盒本身就是
一个独立,安全,封闭的空间!
下面来看下一个App的沙盒目录:
很明显,目录分为四大部分,下面来一一说明一下:
1. Documents 目录
您应该将所有的应用程序数据文件写入到这个目录下。
这个目录用于存储用户数据或其它应该定期备份的信息。
保存由应用程序产生的文件或者数据,例如:涂鸦程序生成的图片,游戏关卡记录
iCloud会自动备份Document中的所有文件。
2. Library 目录: 子目录(Caches 和 Preferences)
Preferences目录: 用来存储偏好设置文件, 通过[NSUserDefaults standarDefaults]来直接操作
Caches目录: 用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息
缓存,保存下载的文件资源等,以供后续使用
PS: 缓存的资源文件不会自动删除,所以想要删除,需要有清除缓存的功能!
3. tmp 目录: 用于存放临时文件(数据), 保存应用再次启动时不需要的数据。
临时文件夹里面的文件,由系统回收, 如磁盘内存不足,重启手机,应用进程杀掉,都会清除临时文件,程序员不用手动管理临时文件的!
常用获取文件目录的方法:
1. 获取根目录:
//获取沙盒根目录路径
NSString *homeDir = NSHomeDirectory();
2. 获取Documents目录
//获取Documents目录路径
//使用 NSSearchPathForDirectoriesInDomains 只能定位Caches目录和Documents目录
NSString*path =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
3. 获取Caches目录路径的方法
//获取Caches目录路径
NSString *dir =[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastobject];
4. 获取tmp目录
//获取tmp目录路径
NSString *tmpDir = NSTemporaryDirectory();