iOS沙盒机制
OS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。
每个应用程序都有自己的存储空间
应用程序不能翻过自己的围墙去访问别的存储空间的内容
应用程序请求的数据都要通过权限检测,如果不符合条件的话,不会被放行。
默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp
获取三个文件路径的方法如下:
NSString * homePath = NSHomeDirectory();
NSLog(@"%@", homePath);
NSArray * paths1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * documentPath = [paths1 objectAtIndex:0];
NSLog(@"%@", documentPath);
NSArray * paths2 = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString * libraryPath = paths2[0];
NSLog(@"%@", libraryPath);
NSString * tmpPath = NSTemporaryDirectory();
NSLog(@"%@", tmpPath);
2015-11-11 16:17:40.890 01-plist[3260:166781] /Users/***/Library/Developer/CoreSimulator/Devices/3280E9C0-8716-4ED8-8B96-1774F546052F/data/Containers/Data/Application/3E434E59-2130-479F-8D56-7198958D2513
2015-11-11 16:17:40.891 01-plist[3260:166781] /Users/***/Library/Developer/CoreSimulator/Devices/3280E9C0-8716-4ED8-8B96-1774F546052F/data/Containers/Data/Application/3E434E59-2130-479F-8D56-7198958D2513/Documents
2015-11-11 16:17:40.892 01-plist[3260:166781] /Users/***/Library/Developer/CoreSimulator/Devices/3280E9C0-8716-4ED8-8B96-1774F546052F/data/Containers/Data/Application/3E434E59-2130-479F-8D56-7198958D2513/Library
2015-11-11 16:17:40.892 01-plist[3260:166781] /Users/***/Library/Developer/CoreSimulator/Devices/3280E9C0-8716-4ED8-8B96-1774F546052F/data/Containers/Data/Application/3E434E59-2130-479F-8D56-7198958D2513/tmp/
如图:
Documents 目录:您应该将所有de应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。
Library 目录:这个目录下有两个子目录:Caches 和 Preferences
Preferences 目录:包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.
Caches 目录:用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。
tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。