1、沙盒(sandbox)数据库
iOS的应用只能访问为该应用建立的区域,不可访问其余区域,应用的其余非代码文件都存在此目录下,包括图片,属性文件plist,bundle,nib文件等,这块区域称之为沙盒(sandBox)。安全
每一个应用都有属于本身的存储空间,即沙盒app
应用只能访问本身的沙盒,不可访问其余区域函数
若是应用须要进行文件操做,则必须将文件存放在沙盒中,尤为是数据库文件,在电脑上操做时,能够去访问,可是若是要装在真机上可使用,必须将数据库文件拷贝至沙盒中。code
出于安全的目的,应用程序只能将本身的数据和偏好设置写入到几个特定的位置上。当应用程序被安装到设备上时,系统会为其建立一个家目录,这个家目录就是应用程序的沙盒。orm
家目录下共有四个子目录:对象
Documents 目录:您应该将全部的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该按期备份的信息。图片
AppName.app 目录:这是应用程序的程序包目录,包含应用程序的自己。因为应用程序必须通过签名,因此您在运行时不能对这个目录中的内容进行修改,不然可能会使应用程序没法启动。资源
Library 目录:这个目录下有两个子目录:Caches 和 Preferencesstring
Preferences 目录包含应用程序的偏好设置文件。您不该该直接建立偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好
Caches 目录用于存放应用程序专用的支持文件,保存应用程序再次启动过程当中须要的信息。
tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程当中不须要的信息。
获取这些目录路径的方法:
//1,获取家目录路径的函数:
NSString *homeDir = NSHomeDirectory();
//2,获取Documents目录路径的方法:
//获取Documents文件夹1
NSString * documents1 = [NSString stringWithFormat:@"%@/Documents",sandBoxPath];
NSLog(@"documents1===%@",documents1);
//获取Documents文件夹2 用这个方法会自动给咱们加一个/
NSString * docuemts2 = [sandBoxPath stringByAppendingPathComponent:@"Documents"];
NSLog(@"documenst2=====%@",docuemts2);
//获取Documents文件夹3
//第一个参数,让你写你要找哪一个文件
//第二个参数,让你指定从哪一个地方找你要找的文件
//第三个参数,找到文件后是否展开
NSArray *documetns3 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO);
NSLog(@"documents3====%@",documetns3[0]);
//3,获取Caches目录路径的方法:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);
NSString *cachesDir = [paths objectAtIndex:0];
//4,获取tmp目录路径的方法:
NSString *tmpDir = NSTemporaryDirectory();
//5,获取应用程序程序包中资源文件路径的方法:
//例如获取程序包中一个图片资源(apple.png)路径的方法:
NSString *imagePath = [[NSBundlemainBundle]pathForResource:@"apple"ofType:@"png"];
UIImage *appleImage = [[UIImagealloc]initWithContentsOfFile:imagePath];
//代码中的mainBundle类方法用于返回一个表明应用程序包的对象。
//找到library文件夹
NSArray * library = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSLog(@"library=====%@",library);
//找到Temp文件夹
NSString *temp = NSTemporaryDirectory();
NSLog(@"temp===%@",temp);
// //找到系统资源文件
NSString * bundle = [[NSBundle mainBundle] bundlePath];
NSLog(@"bundle=====%@",bundle);
// //获取工程文件路径
NSString * imagePath = [[NSBundle mainBundle] pathForResource:@"3" ofType:@"png"];
NSLog(@"imagePath=====%@",imagePath);