码迷,mamicode.com
首页 > 移动开发 > 详细

ios 清除一个app的缓存

时间:2018-03-10 22:11:05      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:管理   循环   cancel   代码   size   文件夹   send   sar   child   

首先应该获取缓存路径,然后计算缓存的总大小,最后在利用for循环,逐个删除缓存文件夹里面的文件

下面附上完整的代码例子

//清除缓存按钮的点击事件

- (void)putBufferBtnClicked:(UIButton *)btn{    

CGFloat size = [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject] + [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject] + [self folderSizeAtPath:NSTemporaryDirectory()];       

NSString *message = size > 1 ? [NSString stringWithFormat:@"缓存%.2fM, 删除缓存", size] : [NSString stringWithFormat:@"缓存%.2fK, 删除缓存", size * 1024.0];        UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:message preferredStyle:(UIAlertControllerStyleAlert)];       

UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction *action) {               

         [self cleanCaches];           

}];       

UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:nil];   

[alert addAction:action];   

[alert addAction:cancel];   

[self showDetailViewController:alert sender:nil];}

// 计算目录大小-

-(CGFloat)folderSizeAtPath:(NSString *)path{   

// 利用NSFileManager实现对文件的管理   

NSFileManager *manager = [NSFileManager defaultManager];   

CGFloat size = 0;  

if ([manager fileExistsAtPath:path]) {       

// 获取该目录下的文件,计算其大小       

NSArray *childrenFile = [manager subpathsAtPath:path];      

for (NSString *fileName in childrenFile) {           

NSString *absolutePath = [path stringByAppendingPathComponent:fileName];           

size += [manager attributesOfItemAtPath:absolutePath error:nil].fileSize;      

}       

// 将大小转化为M      

return size / 1024.0 / 1024.0;  

}   

return 0;

}

// 根据路径删除文件

- (void)cleanCaches:(NSString *)path{   

// 利用NSFileManager实现对文件的管理   

NSFileManager *fileManager = [NSFileManager defaultManager];   

if ([fileManager fileExistsAtPath:path]) {       

// 获取该路径下面的文件名       

NSArray *childrenFiles = [fileManager subpathsAtPath:path];      

for (NSString *fileName in childrenFiles) {           

// 拼接路径           

NSString *absolutePath = [path stringByAppendingPathComponent:fileName];           

// 将文件删除           

[fileManager removeItemAtPath:absolutePath error:nil];       

}  

}

ios 清除一个app的缓存

标签:管理   循环   cancel   代码   size   文件夹   send   sar   child   

原文地址:https://www.cnblogs.com/linusflow/p/8541766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!