IOS開發中涉及到文件路徑,就需要了解蘋果的沙盒機制。那么什么是沙河?
一、沙盒的概念與作用
1、IOS應用程序只能在為該程序創建的文件系統中讀取文件,不可以去其他地方訪問,此區域被稱為沙盒。
2、每個應用程序都有自己獨立的存儲空間,不能去訪問其他應用程序的存儲空間的內容。實際上沙盒是一種安全體系,應用程序所有的操作都要通過這個體系來執行,以保證每個應用程序數據的獨立性和安全性。
二、沙盒中的文件夾
沙盒中的文件夾包括Documents、Library、tmp。簡述一下他們的區別:
1、Documents:用于存儲用戶數據,iTunes備份和恢復的時候會包括此目錄,所以,蘋果建議將程序中建立的或在程序中瀏覽到的文件數據保存在該目錄下。
2、Library:包含兩個子目錄:Caches 和 Preferences。其中Caches用來存儲用戶的緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應用退出刪除。Preferences是APP的偏好設置,可以通過NSUserDefaults來讀取和設置。
3、tmp:存儲用戶的臨時文件。
三、獲取文件保存的路徑
1、Documents: 最常用的目錄,iTunes同步該應用時會同步此文件夾中的內容,適合存儲重要數據。
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
2、Library/Caches: iTunes不會同步此文件夾,適合存儲體積大,不需要備份的非重要數據。
NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
3、Library/Preferences: iTunes同步該應用時會同步此文件夾中的內容,通常保存應用的設置信息。
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
4、tmp: iTunes不會同步此文件夾,系統可能在應用沒運行時就刪除該目錄下的文件,所以此目錄適合保存應用中的一些臨時文件,用完就刪除。
NSString *path = NSTemporaryDirectory();
5、"應用程序包": 這里面存放的是應用程序的源文件,包括資源文件和可執行文件。
NSString *path = [[NSBundle mainBundle] bundlePath];