前言:文件夹种类
沙盒目录里面有Documents、Library(内含Caches和Preferences)、temp 、SystemData这几个文件夹,如下图:
image.png
介绍
1.Documents
该目录会被iTunes自动备份,存储需要持久化存储的数据,重要的文件数据需要保存在此处.
-获取路径方法
NSString *docDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
2.Library
- Caches: 存储缓存数据,在设备低存储空间时可能会被删除,iTunes或iCloud不会对其进行备份。
- Preferences:保存app的偏好设置(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不会同步该目录,重启手机杀死程序都不会立马清空,应该有时间限制具体多久没再做测试
获取路径方法
NSString *tmpDir = NSTemporaryDirectory();
4.清除方法
删除路径下的缓存
//获取文件管理器
NSFileManager *fileM = [NSFileManager defaultManager];
//获取缓存路径
NSString *cachePath = //任意上面的一个路径
//清除缓存
[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];
//获取当前是文件还是目录
BOOL isDir = NO;
[fileM fileExistsAtPath:filePath isDirectory:&isDir];
if(isDir){//如果是目录则跳出此次循环
continue;
}
//将文件大小累加
size = size + [[fileM attributesOfItemAtPath:filePath error:nil][NSFileSize] longLongValue];
网友评论