iOS 沙盒目錄結構

iOS系統中,每個應用都有自己的沙盒,且應用只能訪問其對應的沙盒目錄下面的文件。當然,在用戶授權的情況下,應用也可以訪問其他目錄下面的文件。比如,用戶授權情況下,應用可以訪問相冊、通訊錄。在開發中,經常會涉及到 iOS 沙盒目錄,比如讀寫文件,歸檔解檔等。

一:沙盒的目錄結構

app的沙盒目錄結構如下圖:


可知,沙盒目錄下有三個文件夾:Documents、Library、Temp。其中,Library下面有兩個文件夾,分別是 Preferences 和 Caches。

二:每個目錄下存放的文件

1: Documents 目錄:用來存儲用戶數據,應該將所有的應用程序數據文件寫入到該目錄下。

2:Library 目錄:(1)Preferences 目錄:包含應用程序的偏好設置文件  (2)Caches 目錄:用於存放應用程序專用的支持文件,保存應用程序再次啓動過程中需要的信息。

3:Temp目錄:用於存放臨時文件,保存應用程序再次啓動過程中不需要的信息。

三:獲取沙盒目錄的方法

獲取沙盒目錄路徑可以通過 NSSearchPathForDirectoriesInDomains 方法,該方法有三個參數:

1:directory NSSearchPathDirectory類型的enum值,表情要搜索的目錄名稱。

2:domainMask NSSearchPathDomainMask類型的enum值,指定搜索範圍。通常情況下是NSUserDomainMask,表示搜索的範圍限制於當前應用的沙盒目錄。

3:expandTilde Bool值,表示返回的路徑中是否展開~。如果是YES,表示展開,NO表示不展開。

獲取沙盒目錄路徑的代碼:

// 獲取沙盒主目錄路徑
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();

第三個參數爲YES時的示例路徑:

/var/mobile/Applications/DBAC1849-CF0A-435A-98FB-A7472C73EC42/Library/Caches/letuAllClassifyString.plist

第三個參數爲NO時的示例路徑:

~/Library/Caches/letuAllClassifyString.plist
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章