清除缓存功能
2016-02-17 15:22
411 查看
代码有点多,可以写一个工具类继承自NSObject
工具类.h文件
工具类.m文件
在控制器里实现
工具类.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]; } }
相关文章推荐
- sqlserver 中一些常看的指标和清除缓存的方法
- 多种浏览器清除缓存的方法小结
- xmlhttp缓存清除的2种解决方法
- window.showModalDialog两次加载问题清除缓存方法
- UIWebView清除缓存和cookie
- SDWebImage清除某一特定url的图片缓存
- AFNetworking中UIImageView+AFNetworking等清除缓存方法
- php 文件夹删除、php清除缓存程序
- 屏蔽掉应用程序界面的"清除数据"功能
- 清除缓存
- [Object-c]获取文件的大小 清除缓存
- SDWebImage手动清除缓存的方法
- Android清除数据、清除缓存、一键清理的区别
- 浏览器如何清除缓存
- android清除缓存为什么总是存在12k?
- iOS 清理某一个cookies 或者全部 cookies
- 数据持久化(归档和反归档操作 ,清除缓存等等)
- nginx清除缓存图片
- webview清除缓存
- Varnish---原理及应用