ios 清除一个app的缓存

首先应该获取缓存路径,然后计算缓存的总大小,最后在利用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];       

}  

}

转载于:https://www.cnblogs.com/linusflow/p/8541766.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值