您的位置:首页 > 其它

清除缓存功能

2016-02-17 15:22 411 查看
代码有点多,可以写一个工具类继承自NSObject

工具类.h文件

#import <Foundation/Foundation.h>
#import "UIImageView+WebCache.h"
@interface ClearCacheTool : NSObject

+(float)fileSizeAtPath:(NSString *)path;
+(float)folderSizeAtPath:(NSString *)path;
+(void)clearCache:(NSString *)path;

@end


工具类.m文件

//计算单个文件大小
+(float)fileSizeAtPath:(NSString *)path{
NSFileManager *fileManager=[NSFileManager defaultManager];
if([fileManager fileExistsAtPath:path]){
long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize;
return size/1024.0/1024.0;
}
return 0;
}

//计算目录大小
+(float)folderSizeAtPath:(NSString *)path{
NSFileManager *fileManager=[NSFileManager defaultManager];
float folderSize;
if ([fileManager fileExistsAtPath:path]) {
NSArray *childerFiles=[fileManager subpathsAtPath:path];
for (NSString *fileName in childerFiles) {
NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
folderSize +=[ClearCacheTool fileSizeAtPath:absolutePath];
}
//SDWebImage框架自身计算缓存的实现
folderSize+=[[SDImageCache sharedImageCache] getSize]/1024.0/1024.0;
return folderSize;
}
return 0;
}
//清理文件
+(void)clearCache:(NSString *)path{
NSFileManager *fileManager=[NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:path]) {
NSArray *childerFiles=[fileManager subpathsAtPath:path];
for (NSString *fileName in childerFiles) {
//如有需要,加入条件,过滤掉不想删除的文件
NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
[fileManager removeItemAtPath:absolutePath error:nil];
}
}
[[SDImageCache sharedImageCache] cleanDisk];
}


在控制器里实现

#import "ClearCacheTool.h"
@interface ViewController ()<UIAlertViewDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)clear:(id)sender {
//清除Caches文件夹的文件
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
NSLog(@"cachePath=%@",cachePath);
float foldersize = [ClearCacheTool folderSizeAtPath:cachePath];
if (foldersize>0) {
NSString *altStr = [NSString stringWithFormat:@"缓存大小为%.2fM,确定要清理缓存吗?",foldersize];
UIAlertView *altView = [[UIAlertView alloc]initWithTitle:@"提示" message:altStr delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"取消", nil];
[altView show];
}

}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 1) {

}else{
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
[ClearCacheTool clearCache:cachePath];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  清除缓存