您的位置:首页 > 移动开发 > IOS开发

iOS 缓存的获取计算与清除归零

2016-08-15 00:00 489 查看
摘要: 从应用程序中获取缓存路径,将缓存文件进行拼接扫描,并计算所有文件大小,汇总出总大小.清除缓存时,将缓存路径下的文件进行删除.

1,获取路径并进行数据的拼接

//获取缓存
- (void)caculatorSize{

NSString *cacheFilePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches"];
NSFileManager* manager = [NSFileManager defaultManager];
_manager = manager;
if (![_manager fileExistsAtPath:cacheFilePath]){
NSLog(@"Null");
}
NSEnumerator *childFilesEnumerator = [[_manager subpathsAtPath:cacheFilePath] objectEnumerator];
NSString* fileName;
_fileName = fileName;
long long folderSize = 0;
while ((_fileName = [childFilesEnumerator nextObject]) != nil){

NSString* fileAbsolutePath = [cacheFilePath stringByAppendingPathComponent:_fileName];
_fileAbsolutePath = fileAbsolutePath;
folderSize += [[_manager attributesOfItemAtPath:fileAbsolutePath error:nil]fileSize];
}

CGFloat intg = [[SDImageCache sharedImageCache] getSize];
CGFloat sum = folderSize + intg;
NSString * currentVolum = [NSString stringWithFormat:@"%@",[self fileSizeWithInterge:sum]];
_currentVolum = currentVolum;

}

2,计算缓存,根据大小添加相应单位

//计算文件大小
- (NSString *)fileSizeWithInterge:(CGFloat)size{
// 1k = 1024, 1m = 1024k
if (size < 1024) {// 小于1k
if (size <200){

return [NSString stringWithFormat:@"%@B",@"0"];
}
return [NSString stringWithFormat:@"%ldB",(long)size];
}else if (size < 1024 * 1024){// 小于1m
CGFloat aFloat = size/1024;
return [NSString stringWithFormat:@"%.0fK",aFloat];
}else if (size < 1024 * 1024 * 1024){// 小于1G
CGFloat aFloat = size/(1024 * 1024);
return [NSString stringWithFormat:@"%.2fM",aFloat];
}else{
CGFloat aFloat = size/(1024*1024*1024);
return [NSString stringWithFormat:@"%.1fG",aFloat];
}
}

3,清除缓存

//清除缓存
- (void)cleanTheCaheForWebView{

NSString *cacheFilePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches"];
NSEnumerator *childFilesEnumerator = [[_manager subpathsAtPath:cacheFilePath] objectEnumerator];
NSString *fileOne;
while ((fileOne = [childFilesEnumerator nextObject]) != nil){

NSString* fileAbsolutePath = [cacheFilePath stringByAppendingPathComponent:fileOne];
//过滤掉不想清除的文件
if ([fileAbsolutePath rangerOfString:@"JPUSH"].location != NSNotFound){

}else{

[_manager removeItemAtPath:fileAbsolutePath error:nil];
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息