iOS的沙盒目錄結構和App Bundle

每個App的沙河目錄結構, 都如下圖所示:

沙盒目錄

默認情況下, 每個沙盒含有1個應用程序包和三個文件夾: Documents, Library和tmp. 因為沙盒機制, 應用只能在這幾個目錄讀寫文件.

MyApp.app:

應用程序包, 這里面存放的是應用程序文件, 包括資源文件和可執行文件.
訪問路徑:

//object-c
NSString *budlePath = [[NSBundle mainBundle] bundlePath];
//swift
let bundlePath = Bundle.main.bundlePath

Documents:

應用程序在運行時生成的一些需要長久保存的數據(比如: 個人設置等信息), 通過iTunes, iCloud備份時,會備份這個目錄下的數據, 此目錄下保存相對重要的數據.

//object-c
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
//swift
let path =  NSHomeDirectory() + "/Documents"
let path2 = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0]

Library/Caches

從網絡上下載的文件或數據(如: 音樂緩存, 圖片緩存等) , 此目錄下的數據不會自動刪除, 需要程序員手動清除該目錄下的數據. ITunes, iCloud備份時不會備份此目錄下的數據.一般用于存儲體積不大, 不需要備份的非重要資源數據.

//object-c
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

NSString* cachesDirectory = [paths objectAtIndex:0];
//swift
let path =  NSHomeDirectory() + "/Library/Caches"
let path2 = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0]

Library/Preferences

保存應用程序的偏好設置文件(使用NSUerDefaults類設置是創建, 不應該手動創建), iTunes, iCloud備份時會備份此目錄下的數據.該目錄由系統自動管理,通常用來儲存一些基本的應用配置信息,比如賬號密碼,自動登錄等。

tmp

保存應用運行時產生的一些臨時數據,應用程序退出,系統磁盤空間不夠,手機重啟時,都會自動清除該目錄的數據。無需程序員手動清除該目錄中的數據.iTunes、iCloud備份時,不會備份次目錄。

//object-c
NSString *tempPath = NSTemporaryDirectory();
//swift
let path = NSTemporaryDirectory()
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容