iOS的沙盒机制,应用只能访问自己应用目录下的文件。可以形象的理解为,一个个应用,就相当于一个个的碉堡,各是各的空间,
iphone沙箱模型的有三个文件夹,documents,tmp,Library。有时开发时要求我们保存一些数据在本地,这就用到了。
1、Documents 目录:苹果建议将程序创建产生的文件以及应用浏览产生的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
2、Library 目录:这个目录下有两个子目录:Caches 和 Preferences
Preferences 目录:包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.
Caches 目录:存放缓存文件,保存应用的持久化数据,用于应用升级或者应用关闭后的数据保存,不会被itunes同步,所以为了减少同步的时间,可以考虑将一些比较大的文件而又不需要备份的文件放到这个目录下。
3、tmp 目录:提供一个即时创建临时文件的地方,但不需要持久化,在应用关闭后,该目录下的数据将删除,也可能系统在程序不运行的时候清除。
获取这些目录路径的方法:
// 获取沙盒主目录路径
NSString *homePath = NSHomeDirectory();
NSLog(@"homePath:%@",homePath);
// 获取Documents目录路径
NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath = [paths1 objectAtIndex:0];
NSLog(@"docPath:%@",docPath);
// 获取Caches目录路径
NSArray *paths2 = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesPath = [paths2 objectAtIndex:0];
NSLog(@"cachesPath:%@",cachesPath);
// 获取tmp目录路径
NSString *tmpPath = NSTemporaryDirectory();
NSLog(@"tmpPath:%@",tmpPath);