ios 清除一个app的缓存

Posted 可爱的娃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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];       

}  

}

以上是关于ios 清除一个app的缓存的主要内容,如果未能解决你的问题,请参考以下文章

ios获取缓存文件的大小并清除缓存

iOS获取缓存文件的大小并清除缓存

APP开发-Vue3+Vant+Html5+ 实现管理应用缓存以及清除缓存

APP开发-Vue3+Vant+Html5+ 实现管理应用缓存以及清除缓存

APP开发-Vue3+Vant+Html5+ 实现管理应用缓存以及清除缓存

iOS Web App - 如何处理过度的应用缓存?