前言:文件夾種類
沙盒目錄里面有Documents价认、Library(內(nèi)含Caches和Preferences)谦去、temp 囱修、SystemData這幾個(gè)文件夾,如下圖:
介紹
1.Documents
該目錄會被iTunes自動備份,存儲需要持久化存儲的數(shù)據(jù),重要的文件數(shù)據(jù)需要保存在此處.
-獲取路徑方法
NSString *docDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
2.Library
- Caches: 存儲緩存數(shù)據(jù),在設(shè)備低存儲空間時(shí)可能會被刪除想诅,iTunes或iCloud不會對其進(jìn)行備份吠卷。
- Preferences:保存app的偏好設(shè)置(NSUserDefaults)(會以BundleId.plist形式存儲)
獲取路徑方法
NSString *libDirectory = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) firstObject];
//Caches文件夾
NSString * cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
//Preferences
NSArray *preferencesPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *prePath = [[paths firstObject] stringByAppendingString:@"/Preferences"];
3.tmp
- 存放臨文件,iTunes不會同步該目錄,重啟手機(jī)殺死程序都不會立馬清空,應(yīng)該有時(shí)間限制具體多久沒再做測試
獲取路徑方法
NSString *tmpDir = NSTemporaryDirectory();
4.清除方法
刪除路徑下的緩存
//獲取文件管理器
NSFileManager *fileM = [NSFileManager defaultManager];
//獲取緩存路徑
NSString *cachePath = //任意上面的一個(gè)路徑
//清除緩存
[fileM removeItemAtPath:cachePath error:nil];
獲取路徑下的文件大小
//獲取文件管理器
NSFileManager *fileM = [NSFileManager defaultManager];
//獲取緩存路徑
NSString *cachePath = //上面的任意路徑;
//得到緩存文件列表
NSArray *childPaths = [fileM subpathsAtPath:cachePath];
//存儲文件總長度
long long size = 0;
for(NSString *childPath in childPaths){
//得到文件路徑
NSString *filePath = [cachePath stringByAppendingPathComponent:childPath];
//獲取當(dāng)前是文件還是目錄
BOOL isDir = NO;
[fileM fileExistsAtPath:filePath isDirectory:&isDir];
if(isDir){//如果是目錄則跳出此次循環(huán)
continue;
}
//將文件大小累加
size = size + [[fileM attributesOfItemAtPath:filePath error:nil][NSFileSize] longLongValue];