IOS开发中涉及到文件路径,就需要了解苹果的沙盒机制。那么什么是沙河?
一、沙盒的概念与作用
1、IOS应用程序只能在为该程序创建的文件系统中读取文件,不可以去其他地方访问,此区域被称为沙盒。
2、每个应用程序都有自己独立的存储空间,不能去访问其他应用程序的存储空间的内容。实际上沙盒是一种安全体系,应用程序所有的操作都要通过这个体系来执行,以保证每个应用程序数据的独立性和安全性。
二、沙盒中的文件夹
沙盒中的文件夹包括Documents、Library、tmp。简述一下他们的区别:
1、Documents:用于存储用户数据,iTunes备份和恢复的时候会包括此目录,所以,苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下。
2、Library:包含两个子目录:Caches 和 Preferences。其中Caches用来存储用户的缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除。Preferences是APP的偏好设置,可以通过NSUserDefaults来读取和设置。
3、tmp:存储用户的临时文件。
三、获取文件保存的路径
1、Documents: 最常用的目录,iTunes同步该应用时会同步此文件夹中的内容,适合存储重要数据。
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
2、Library/Caches: iTunes不会同步此文件夹,适合存储体积大,不需要备份的非重要数据。
NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
3、Library/Preferences: iTunes同步该应用时会同步此文件夹中的内容,通常保存应用的设置信息。
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
4、tmp: iTunes不会同步此文件夹,系统可能在应用没运行时就删除该目录下的文件,所以此目录适合保存应用中的一些临时文件,用完就删除。
NSString *path = NSTemporaryDirectory();
5、"应用程序包": 这里面存放的是应用程序的源文件,包括资源文件和可执行文件。
NSString *path = [[NSBundle mainBundle] bundlePath];