IOS中的沙盒機制(SandBox)是一種安全體系,出於安全考慮,iOS系統的沙盒機制規定每一個應用都只能訪問當前沙盒目錄下面的文件(也有例外,好比系統通信錄能在用戶受權的狀況下被第三方應用訪問)
1、沙盒中幾個主要的目錄
每一個沙盒下面都有類似的目錄結構,以下圖所示(出自蘋果官方文檔):
應用沙盒通常包括如下幾個文件目錄: 1 應用程序包:包含全部資源文件和可執行文件
2 Documents:保存應用運行時生成的須要持久化的數據,iTunes會自動備份該目錄
3 tmp:保存應用運行時所需的臨時數據,使用完畢後再將相應的文件從該目錄刪除,應用沒有運行時,系統也可能會自動清理該目錄下的文件,iTunes不會同步該目錄,iPhone重啓時該目錄下的文件會丟失。
4 Libaray:存儲程序的默認設置和其餘狀態信息,iTunes會自動備份該目錄。
5 Libaray/Caches:存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應用退出刪除,通常存放體積比較大,不是很重要的資源
6 Libaray/Preferences:保存應用的全部偏好設置,ios的Settings(設置)應用會在該目錄中查找應用的設置信息,iTunes會自動備份該目錄。
一、獲取程序的Home目錄 NSString *homeDirectory = NSHomeDirectory(); NSLog(@"path:%@", homeDirectory); 二、獲取document目錄 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *path = [paths objectAtIndex:0]; NSLog(@"path:%@", path); 三、獲取Cache目錄 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *path = [paths objectAtIndex:0]; NSLog(@"%@", path); 四、獲取Library目錄 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *path = [paths objectAtIndex:0]; NSLog(@"%@", path); 五、獲取Tmp目錄 NSString *tmpDir = NSTemporaryDirectory(); NSLog(@"%@", tmpDir); 六、寫入文件 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *docDir = [paths objectAtIndex:0]; if (!docDir) { NSLog(@"Documents 目錄未找到"); } NSArray *array = [[NSArray alloc] initWithObjects:@"內容",@"content",nil]; NSString *filePath = [docDir stringByAppendingPathComponent:@"testFile.txt"]; [array writeToFile:filePath atomically:YES]; 7, 寫入文件 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *docDir = [paths objectAtIndex:0]; NSString *filePath = [docDir stringByAppendingPathComponent:@"testFile.txt"]; NSArray *array = [[NSArray alloc]initWithContentsOfFile:filePath]; NSLog(@"%@", array);