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