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);

相關文章
相關標籤/搜索