前言:
出于安全考慮顺少,iOS系統(tǒng)的沙盒機制規(guī)定每個應用都只能訪問當前沙盒目錄下面的文件(系統(tǒng)允許授權的文件除外,比如在用戶授權情況下訪問通訊錄,相冊等)捐顷,這展示了iOS系統(tǒng)的封閉性檬洞。在開發(fā)中常常需要數據存儲的功能意狠,比如存取文件,歸檔解檔等疮胖。首先看一下蘋果官方的沙盒目錄結構
沙盒目錄下有三個文件夾:Documents环戈、Library闷板、temp以及一個.app包!應用程序只能訪問該目錄下的文件夾T喝U谕怼!
1拦止、Documents 目錄:您應該將所有的應用程序數據文件寫入到這個目錄下县遣。這個目錄用于存儲用戶數據。該路徑可通過配置實現iTunes共享文件汹族∠羟螅可被iTunes備份。
2顶瞒、AppName.app 目錄:這是應用程序的程序包目錄夸政,包含應用程序的本身。由于應用程序必須經過簽名榴徐,所以您在運行時不能對這個目錄中的內容進行修改守问,否則可能會使應用程序無法啟動。
3坑资、Library 目錄:這個目錄下有兩個子目錄:
Preferences 目錄:包含應用程序的偏好設置文件耗帕。您不應該直接創(chuàng)建偏好設置文件,而是應該使用NSUserDefaults類來取得和設置應用程序的偏好.
Caches 目錄:用于存放應用程序專用的支持文件袱贮,保存應用程序再次啟動過程中需要的信息仿便。
可創(chuàng)建子文件夾≡芪。可以用來放置您希望被備份但不希望被用戶看到的數據探越。該路徑下的文件夾,除Caches以外窑业,都會被iTunes備份钦幔。
4、tmp 目錄:這個目錄用于存放臨時文件常柄,保存應用程序再次啟動過程中不需要的信息庄敛。該路徑下的文件不會被iTunes備份抱婉。
step1.獲取沙盒根目錄路徑
NSString *path = NSHomeDirectory();
step2.獲取各子目錄路徑
// 獲取沙盒主目錄路徑
NSString *homeDir = NSHomeDirectory();
// 獲取Documents目錄路徑
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
// 獲取Library的目錄路徑
NSString *libDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
// 獲取Caches目錄路徑
NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
// 獲取tmp目錄路徑
NSString *tmpDir = NSTemporaryDirectory();
獲取應用程序程序包中資源文件路徑的方法:
NSLog(@"%@",[[NSBundle mainBundle] bundlePath]);
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"apple" ofType:@"png"];
UIImage *appleImage = [[UIImage alloc] initWithContentsOfFile:imagePath];