- 沙盒:iOS应用程序为自己创建的独立(不可能两个程序共用一个沙盒),封闭(每一个应用程序的沙盒,只有它自己才能使用),安全(沙盒里边每个文件夹都有自己特有的删除渠道.只要自己手动不删除,文件永远存在)的一个文件系统目录.
- 查找某个应用程序的沙盒的方法: 点击[前往]=>同时按住Alt键=>选中[资源库]=>选中Developer文件夹=>CoreSimulator=>Devices=>.......
应用程序的沙盒目录下的四个文件夹:
1:documents:保存应用程序运行时生成的持久化数据,iTunes会备份和恢复此文件
-
documents
下的inbox
文件:该文件是用来保存由其他应用程序请求当前应用程序打开的文件
//例如:应用A中有一个文件,可以被应用程序B打开,那么应用B就创建一个文件C去保存A中可被B打开的文件(将A中的文件复制到C中)再让B打开A中的文件,而这个C,就是inbox文件(例如微信中打开网页)
获取路径方法:
NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 1, YES)firstObject];
是数组使用firstObject/lastObject/objectAtIndex:0;因为在查找沙盒路径,返回的是一个数组,而这个数组中只有一个元素,(因为在移动端,不存在多用户,而PC端,涉及到多用户问题(管理员,访客))
2:library:用来存储应用程序的文件数据,默认设置,或者其他动态信息,其中包含两个文件夹(Caches,Preferences)
获取路径方法:
NSString *library = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, 1, YES)firstObject];
-
library/Caches:
存储缓存文件,这个目录用于保存那些可再生文件,如网络请求数据(图片,音频,视频,)鉴于此,应用程序最好还是负责删除这些文件,不会被iTunes同步
获取路径方法:
NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, 1, YES)firstObject];
-
library/Preferences:用来存储用户的偏好设置,会将APP的偏好设置放在这个文件中(夜间模式,无图模式,永久存储是否会或者去地理位置),注意:我们用NSUserDefaults存储的用户数据都会被保存在该目录下的文件中,会被iTunes同步.
获取路径方法:
//注意:通常情况下,Preferences是有系统进行维护,我们很少进行操作
NSString *Preferences = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)firstObject];
//stringByAppendingString:将路径与字符串连接在一起拼接为完整路径
NSString *preferencesPath = [Preferences stringByAppendingString:@"/Preferences"];
3:tmp:用来存储临时文件,保存用应用程序在运行时的临时数据,使用完毕后,再将其从相应的文件夹下删除,应用程序没有运行时,系统也有可能删除该目录下的文件,不会被iTunes同步,而且,在iPhone重启时,该目录下单文件会被删除
获取路径方法:
NSString *tmp = NSTemporaryDirectory();
4:.app:获取.app文件:该目录包含了应用程序本身的数据,包含资源文件和可执行文件.程序启动以后会根据需求动态加载(用到了懒加载机制)代码到或者资源到内存中.而且整个目录是只读的,不会被iTunes同步
NSString *app = [[NSBundle mainBundle]resourcePath];