清除缓存

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"清除缓存" style:(UIBarButtonItemStyleDone) target:self action:@selector(deletClink)];

- (void)deletClink {

//读取缓存大小

NSString *str = [NSString stringWithFormat:@"%.2fM",[self readCacheSize]];

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:str delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];

[alert show];

}

//2. 清除缓存

- (void)clearFile

{

NSString * cachePath = [NSSearchPathForDirectoriesInDomains (NSCachesDirectory , NSUserDomainMask , YES ) firstObject];

NSArray * files = [[NSFileManager defaultManager ] subpathsAtPath :cachePath];

//NSLog ( @"cachpath = %@" , cachePath);

for ( NSString * p in files) {

NSError * error = nil ;

//获取文件全路径

NSString * fileAbsolutePath = [cachePath stringByAppendingPathComponent :p];

if ([[NSFileManager defaultManager ] fileExistsAtPath :fileAbsolutePath]) {

[[NSFileManager defaultManager ] removeItemAtPath :fileAbsolutePath error :&error];

}

}

}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

if (buttonIndex == 1) {

[self clearFile];

}

}

//1. 获取缓存文件的大小

-( float )readCacheSize

{

NSString *cachePath = [NSSearchPathForDirectoriesInDomains (NSCachesDirectory , NSUserDomainMask , YES) firstObject];

return [ self folderSizeAtPath :cachePath];

}

//由于缓存文件存在沙箱中,我们可以通过NSFileManager API来实现对缓存文件大小的计算。

// 遍历文件夹获得文件夹大小,返回多少 M

- ( float ) folderSizeAtPath:( NSString *) folderPath{

NSFileManager * manager = [NSFileManager defaultManager];

if (![manager fileExistsAtPath :folderPath]) return 0 ;

NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath :folderPath] objectEnumerator];

NSString * fileName;

long long folderSize = 0 ;

while ((fileName = [childFilesEnumerator nextObject]) != nil ){

//获取文件全路径

NSString * fileAbsolutePath = [folderPath stringByAppendingPathComponent :fileName];

folderSize += [ self fileSizeAtPath :fileAbsolutePath];

}

return folderSize/( 1024.0 * 1024.0);

}

// 计算 单个文件的大小

- ( long long ) fileSizeAtPath:( NSString *) filePath{

NSFileManager * manager = [NSFileManager defaultManager];

if ([manager fileExistsAtPath :filePath]){

return [[manager attributesOfItemAtPath :filePath error : nil] fileSize];

}

return 0;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebIm...
    nkk阅读 4,106评论 0 0
  • 建议大家看 JKSwiftExtension[https://github.com/JoanKing/JKSwif...
    IIronMan阅读 10,622评论 2 29
  • #pragma mark - 第一步,计算缓存文件的大小 //首先获取缓存文件的路径 -(NSString *)g...
    破夕_____________阅读 3,921评论 0 3
  • 清除缓存在每一个应用是一个很常见的功能,今天这里小结一下。 将数据永久性的存储我们称为数据持久化,其本质是将数据存...
    追逐_chase阅读 3,624评论 0 1
  • 清除缓存的方法 自己在网上找的清除缓存的方法 注:具体代码在项目一的练习的WXMovi(清除缓存)工程中的More...
    Sweet苗阅读 4,681评论 0 0