每個App都有自己的沙盒恨旱,也就是一個存儲空間。App之間沒有權(quán)限訪問對方的沙盒資源。沙盒的目錄下有三個文件夾:Documents
入客、Library
、temp
目錄結(jié)構(gòu)
-
Documents
:用于存儲用戶數(shù)據(jù),iTunes
備份和恢復(fù)的時候會包括此目錄铆隘,所以膀钠,蘋果建議將程序中建立的或在程序中瀏覽到的文件數(shù)據(jù)保存在該目錄下。 -
Documents/Inbox
:主要用來存放其他程序請求當(dāng)前程序打開的文件融击。當(dāng)前App只能讀取和刪除該目錄下的文件雳窟,不能新建新文件和修改已存在的文件,如果想修改該目錄下已存在的文件拇涤,需要將它先移動到別的文件夾下誉结。 -
Library
:包含兩個子目錄:Caches
和Preferences
搓彻。Caches
用來存放用戶存放的文件。Preferences
是APP的偏好設(shè)置怔接,可以通過NSUserDefaults
來讀取和設(shè)置稀轨。itunes
會備份此目錄。 -
tmp
: 用于存放臨時文件瓦侮,這個可以放一些當(dāng)APP退出后不再需要的文件佣谐。app不運行的時候,系統(tǒng)也可能會銷毀此目錄保存的臨時文件罚攀。itunes
不備份此目錄
目錄路徑獲取
沙盒目錄
NSHomeDirectory()
.app
[NSBundle mainBundle].bundlePath
.app 中的資源文件:[[NSBundle mainBundle] pathForResource:@"audio" ofType:@"wav"]
Documents
// 在某個范圍內(nèi)容搜索文件夾的路徑 // directory:獲取哪個文件夾.這里:NSUserDomainMask 代表從用戶文件夾下找
// domainMask:在哪個范圍下獲取 NSUserDomainMask:在用戶的范圍內(nèi)搜索
// expandTilde是否展開全路徑, NO:~(選NO存commond+G不進去) YES:顯示全路徑
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); // 在iOS中,只有一個目錄跟傳入的參數(shù)匹配,所以這個集合里面只有一個元素:
NSString *documentsPath = [array objectAtIndex:0];
Preferences
NSString *preferenceParh = NSSearchPathForDirectoriesInDomains(NSPreferencePanesDirectory, NSUserDomainMask, YES)[0];
Caches
NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
Tmp
NSTemporaryDirectory()
參考: