一、沙盒和沙盒存儲(chǔ)路徑
1、沙盒是什么
iOS 每個(gè)iOS應(yīng)用都有自己的應(yīng)用沙盒,應(yīng)用沙盒就是文件系統(tǒng)目錄 。所有的非代碼文件都要保存在此。沙盒就是一種獨(dú)立、安全、封閉的空間 ,不能隨意跨越自己的沙盒去訪問(wèn)別的應(yīng)用程序沙盒中的內(nèi)容。
沙盒的四個(gè)目錄:Documents、Library/Preferences 、Library/Caches 、tmp
Documents:保存用戶產(chǎn)生的數(shù)據(jù);
Library/Preferences: 保存偏好設(shè)置 如:NSUserDefaults
Library/Caches: 緩存數(shù)據(jù) 如 SDWebImage 中的圖片
tmp: 臨時(shí)數(shù)據(jù) 程序退出會(huì)刪除目錄
2、獲取沙盒路徑方法
2.0、獲取沙盒的根目錄
NSString *homePath = NSHomeDirectory();
2.1 獲取沙盒路徑下Documents 目錄
方法1:拼接
NSString *homeDocumentPath = NSHomeDirectory();
NSString *documents = [homeDocumentPath stringByAppendingPathComponent:@"Documents"];
注:stringByAppendingPathComponent 和 stringByAppendingString 的取別
stringByAppendingPathComponent 是路徑拼接 會(huì)在字符串前添加 “/”
stringByAppendingString 拼接字符串 沒(méi)有 “/”
方法2: 搜索
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documents1 = [paths lastObject];
注: 通過(guò)搜索獲得數(shù)組(paths )中只有一條數(shù)據(jù) 所以 不論是取最后一條還是第一條都是正確的
方法3: NSFileManager
NSURL*documents2 = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
//url 轉(zhuǎn)字符串
NSString*documentsPath2 = documents2.absoluteString;
NSLog(@"路徑是:%@",documentsPath2);
2.2、獲取沙盒路徑下 Library/Caches 目錄
和上面 方法相同,參數(shù)不同
方法1:拼接
NSString *homePath = NSHomeDirectory();
NSString *cachePath = [homePath stringByAppendingPathComponent:@"Library/Caches"];
方法2:
NSArray *cpaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath1 = [cpaths lastObject];
方法3:
NSURL*cacheUrl = [[[NSFileManager defaultManager] URLsForDirectory: NSCachesDirectory inDomains:NSUserDomainMask] lastObject];
NSString*cachePath2 = cacheUrl.absoluteString;