iOS开发之沙盒路径篇1


1、沙盒(sandbox)数据库

iOS的应用只能访问为该应用建立的区域,不可访问其余区域,应用的其余非代码文件都存在此目录下,包括图片,属性文件plist,bundle,nib文件等,这块区域称之为沙盒(sandBox)。安全

  1. 每一个应用都有属于本身的存储空间,即沙盒app

  2. 应用只能访问本身的沙盒,不可访问其余区域函数

  3. 若是应用须要进行文件操做,则必须将文件存放在沙盒中,尤为是数据库文件,在电脑上操做时,能够去访问,可是若是要装在真机上可使用,必须将数据库文件拷贝至沙盒中。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);

相关文章
相关标签/搜索