l每一個iOS應用都有本身的應用沙盒(應用沙盒就是應用的文件夾),與其餘文件系統隔離。應用必須待在本身的沙盒裏,其餘應用不能訪問該沙盒.可是,再iOS8以後經過某些操做是能夠訪問的函數
l應用沙盒的文件系統目錄,以下圖所示(假設應用的名稱叫Layer)ui
應用程序包:(上圖中的Layer)包含了全部的資源文件和可執行文件atom
Documents:保存應用運行時生成的須要持久化的數據,iTunes同步設備時會備份該目錄。例如,遊戲應用可將遊戲存檔保存在該目錄spa
tmp:保存應用運行時所需的臨時數據,使用完畢後再將相應的文件從該目錄刪除。應用沒有運行時,系統也可能會清除該目錄下的文件。iTunes同步設備時不會備份該目錄操作系統
Library/Caches:保存應用運行時生成的須要持久化的數據,iTunes同步設備時不會備份該目錄。通常存儲體積大、不須要備份的非重要數據.net
Library/Preference:保存應用的全部偏好設置,iOS的Settings(設置)應用會在該目錄中查找應用的設置信息。iTunes同步設備時會備份該目錄對象
沙盒根目錄:NSString *home = NSHomeDirectory();token
建立Documents:(2種方式)遊戲
1 利用沙盒根目錄拼接」Documents」字符串資源
NSString *home = NSHomeDirectory();
NSString *documents = [home stringByAppendingPathComponent:@"Documents"];
// 不建議採用,由於新版本的操做系統可能會修改目錄名
2 利用NSSearchPathForDirectoriesInDomains函數
// NSUserDomainMask 表明從用戶文件夾下找
// YES 表明展開路徑中的波浪字符「~」
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO);
// 在iOS中,只有一個目錄跟傳入的參數匹配,因此這個集合裏面只有一個元素
NSString *documents = [array objectAtIndex:0];
tmp:NSString *tmp = NSTemporaryDirectory();
Library/Caches:(跟Documents相似的2種方法)
1 利用沙盒根目錄拼接」Caches」字符串
2 利用NSSearchPathForDirectoriesInDomains函數(將函數的第2個參數改成:NSCachesDirectory便可)
Library/Preference:經過NSUserDefaults類存取該目錄下的設置信息