App Sandbox 目錄結(jié)構(gòu)
1.Documents目錄:
用于存儲(chǔ)非常大的文件或需要非常頻繁更新的數(shù)據(jù)演怎,能夠進(jìn)行iTunes或iCloud的備份。獲取方式:
NSArray*array =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
// 在iOS中奉芦,只有一個(gè)目錄跟傳入的參數(shù)匹配坯汤,所以這個(gè)集合里面只有一個(gè)元素
NSString*docPath = [array objectAtIndex:0];或:NSString*docPath = [array lastObject];
- Documents 存放內(nèi)容我們可以將應(yīng)用程序的數(shù)據(jù)文件保存在該目錄下瘾晃。不過(guò)這些數(shù)據(jù)類型僅限于不可再生的數(shù)據(jù)蓝晒,可再生的數(shù)據(jù)文件應(yīng)該存放在Library/Cache目錄下,會(huì)被iTunes同步鸽斟。
- Documents/Inbox 存放內(nèi)容該目錄用來(lái)保存由外部應(yīng)用請(qǐng)求當(dāng)前應(yīng)用程序打開(kāi)的文件拔创。比如我們的應(yīng)用叫A,向系統(tǒng)注冊(cè)了幾種可打開(kāi)的文件格式富蓄,B應(yīng)用有一個(gè)A支持的格式的文件F剩燥,并且申請(qǐng)調(diào)用A打開(kāi)F。由于F當(dāng)前是在B應(yīng)用的沙盒中立倍,我們知道灭红,沙盒機(jī)制是不允許A訪問(wèn)B沙盒中的文件,因此蘋(píng)果的解決方案是講F拷貝一份到A應(yīng)用的Documents/Inbox目錄下口注,再讓A打開(kāi)F变擒,會(huì)被iTunes同步
2.tmp目錄:
這是臨時(shí)文件目錄,用于保存應(yīng)用運(yùn)行時(shí)所需的臨時(shí)數(shù)據(jù)寝志。使用完畢后再將相應(yīng)的文件從該目錄刪除娇斑。應(yīng)用沒(méi)有運(yùn)行時(shí),系統(tǒng)也可能會(huì)清楚該目錄下的文件材部。它不能夠進(jìn)行iTunes或iCloud的備份毫缆。獲取方式:
NSString*tmpDirectory =NSTemporaryDirectory();
3.Library目錄:
Library目錄下面包含兩個(gè)子目錄,分別是Preferences和Caches乐导。Library/Preferences 保存應(yīng)用的所有偏好設(shè)置苦丁,iOS的設(shè)置(Settings)應(yīng)用會(huì)在該目錄中查找應(yīng)用的設(shè)置信息。iTunes同步設(shè)備時(shí)會(huì)備份該目錄物臂⊥可以通過(guò)NSUserDefaults類存取該目錄下的設(shè)置信息。Library/Caches保存應(yīng)用運(yùn)行時(shí)生成的需要持久化的數(shù)據(jù)棵磷。iTunes同步設(shè)備時(shí)不會(huì)備份該目錄蛾狗。一般存儲(chǔ)體積大,不需要備份的非重要數(shù)據(jù)。獲取方式:
NSArray*array =NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);NSString*cachesPath = [array objectAtIndex:0];