簡(jiǎn)介:
每個(gè)ios的應(yīng)用程序都會(huì)有自己的沙盒呛凶,這個(gè)沙盒就是文件目錄。
特點(diǎn):
? ? ? ? ? ?1.每個(gè)應(yīng)用程序的活動(dòng)范圍都限定在自己的沙盒里
? ? ? ? ? ?2.不能隨意跨越自己的沙盒去訪問(wèn)別的應(yīng)用程序沙盒中的內(nèi)容
? ? ? ? ? (iOS8已經(jīng)部分開(kāi)放訪問(wèn)extension)
? ? ? ? ? ?3.在訪問(wèn)別人沙盒內(nèi)的數(shù)據(jù)時(shí)需要訪問(wèn)權(quán)限。
好處:APP之間不能相互通,唯獨(dú)可以通過(guò)URL Scheme可以通信, 比較安全!沙盒本身就是
一個(gè)獨(dú)立甸祭,安全,封閉的空間褥影!
下面來(lái)看下一個(gè)App的沙盒目錄:
很明顯池户,目錄分為四大部分,下面來(lái)一一說(shuō)明一下:
1. Documents 目錄
您應(yīng)該將所有的應(yīng)用程序數(shù)據(jù)文件寫入到這個(gè)目錄下伪阶。
這個(gè)目錄用于存儲(chǔ)用戶數(shù)據(jù)或其它應(yīng)該定期備份的信息煞檩。
保存由應(yīng)用程序產(chǎn)生的文件或者數(shù)據(jù),例如:涂鴉程序生成的圖片栅贴,游戲關(guān)卡記錄
iCloud會(huì)自動(dòng)備份Document中的所有文件斟湃。
2. Library 目錄: 子目錄(Caches 和 Preferences)
Preferences目錄: 用來(lái)存儲(chǔ)偏好設(shè)置文件, 通過(guò)[NSUserDefaults standarDefaults]來(lái)直接操作
Caches目錄: 用于存放應(yīng)用程序?qū)S玫闹С治募苁恚4鎽?yīng)用程序再次啟動(dòng)過(guò)程中需要的信息
緩存凝赛,保存下載的文件資源等注暗,以供后續(xù)使用
PS: 緩存的資源文件不會(huì)自動(dòng)刪除,所以想要?jiǎng)h除墓猎,需要有清除緩存的功能捆昏!
3. tmp 目錄: 用于存放臨時(shí)文件(數(shù)據(jù)), 保存應(yīng)用再次啟動(dòng)時(shí)不需要的數(shù)據(jù)毙沾。
臨時(shí)文件夾里面的文件骗卜,由系統(tǒng)回收, 如磁盤內(nèi)存不足左胞,重啟手機(jī)寇仓,應(yīng)用進(jìn)程殺掉,都會(huì)清除臨時(shí)文件烤宙,程序員不用手動(dòng)管理臨時(shí)文件的遍烦!
常用獲取文件目錄的方法:
1. 獲取根目錄:
//獲取沙盒根目錄路徑
NSString *homeDir = NSHomeDirectory();
2. 獲取Documents目錄
//獲取Documents目錄路徑
//使用 NSSearchPathForDirectoriesInDomains 只能定位Caches目錄和Documents目錄
NSString*path =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
3. 獲取Caches目錄路徑的方法
//獲取Caches目錄路徑
NSString *dir =[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastobject];
4. 獲取tmp目錄
//獲取tmp目錄路徑
NSString *tmpDir = NSTemporaryDirectory();