沙盒機(jī)制
iOS程序默認(rèn)情況下只能對(duì)自己創(chuàng)建的文件系統(tǒng)讀取文件,這個(gè)獨(dú)立、封閉、安全的空間,被稱為“沙盒”。
沙盒結(jié)構(gòu)
既然沙盒就是一個(gè)文件夾,那就看看里面有什么吧。沙盒的目錄結(jié)構(gòu)如下:
應(yīng)用程序包 Documents Library Caches Preferences tmp
當(dāng)我們創(chuàng)建應(yīng)用程序時(shí),在每個(gè)沙盒中都有上述三個(gè)文件,分別是Document、Library和temp。
目錄特性
"應(yīng)用程序包": 這里面存放的是應(yīng)用程序的源文件,包括資源文件和可執(zhí)行文件。
NSString *path = [[NSBundle mainBundle] bundlePath];
沙盒目錄:
NSString *homePath = NSHomeDirectory()
Documents: 最常用的目錄,iTunes同步該應(yīng)用時(shí)會(huì)同步此文件夾中的內(nèi)容,適合存儲(chǔ)重要數(shù)據(jù)。
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;`
Library/Caches: iTunes不會(huì)同步此文件夾,適合存儲(chǔ)體積大,不需要備份的非重要數(shù)據(jù)。
NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
Library/Preferences: iTunes同步該應(yīng)用時(shí)會(huì)同步此文件夾中的內(nèi)容,通常保存應(yīng)用的設(shè)置信息。
tmp: iTunes不會(huì)同步此文件夾,系統(tǒng)可能在應(yīng)用沒運(yùn)行時(shí)就刪除該目錄下的文件,所以此目錄適合保存應(yīng)用中的一些臨時(shí)文件,用完就刪除。
NSString *path = NSTemporaryDirectory();