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

ios 清除一个app的缓存相关推荐

  1. iOS 从一个APP跳转到另一个APP,并带参数跳到指定页面

    功能实现:A跳到B并打开B中指定页面 步骤: 1.首先创建两个项目(项目A,项目B),在项目B中的info.plist文件中添加URL Types,如下图所示:其中URL idenifier是项目B的 ...

  2. android应用程序 多少钱_关于APP开发你最想了解的事,开发一个APP多少钱?

    当我们在进行APP开发,最关注的问题一定是APP开发的价格问题,而作为软件开发行业的从业人员,经常会遇到这样的情况:"别说这么多,你只要告诉我开发一个软件多少钱就行了". 郑州AP ...

  3. 用windows开发ios app_开发一个APP至少需要多少人|安卓|ios|产品经理

    现在APP充斥着我们的生活,我们的吃喝玩乐都离不开了它们.那一款APP的诞生最少需要几个人来完成呢?他们又都是做什么的呢? 1.产品经理 开发APP需要的不仅仅是技术人员,而且需要一个能够做需求分析的 ...

  4. 工业App能否成为继Android和iOS后下一个App开发者的春天?

    为什么需要工业互联网平台? 只要会Java或者C或者HTML5就可以开发手机上的App,但是工业App跟手机App不一样,需要跟设备打交道,需要听懂设备.读懂设备. 传统工业应用软件往往开发难度大.开 ...

  5. iOS App 唤醒另一个App

    iOS App 唤醒另一个App 网上也有讲这块的,感觉讲得都不是很好.而且有一些细节根本没有讲清楚.这里重写整理一下相关知识点. 主要内容 URL Scheme 是什么? 项目中关键的配置 注意事项 ...

  6. 学完教程,不知道接下去从哪里开始做自己的第一个APP,怎么办?酷课堂iOS交流群问答(201902期)

    酷课堂iOS移动开发交流群问题精华整理 以下内容由@客服妹子爬楼整理,限于篇幅,无法就所有问题做详细说明,感兴趣的小伙伴,可以添加小课QQ:3068527144,申请加入交流小群.希望大家碰到的这些问 ...

  7. IOS开发入门之二——第一个App

    如果你对怎么开始IOS开发都不懂的话,请看点下面的链接,先学习关于IOS开发环境的配置以及Swift语言入门: IOS开发入门之一--Swift语言基础     本章将教大家创建一个标准的苹果手机应用 ...

  8. SwiftUI 实现一个 iOS 上 Files App 兼容的文件资源管理器

    功能需求 在 SwiftUI 中自己白手起家写一个 iOS(或iPadOS)上迷你的文件资源管理器是有些难度滴,不过从 iOS 11 (2017年) 官方引入自家的 Files App 之后,我们就 ...

  9. iOS实现一个包含若干页面和子页面的“打卡”App

    iOS实现一个包含若干页面和子页面的"打卡"App 开发环境 Mac OS Objective-C Xcode 实验目的 学习使用纯代码进行UI布局 学习TableView,UIC ...

最新文章

  1. Windows下安装Z3的Python3版
  2. java 代码块的作用_Java核心(三):代码块的作用
  3. redis6持久化主从复制
  4. 一个简单的DWR入门例子
  5. python名片管理系统视频_python视频学习笔记6(名片管理系统开发)
  6. 使用 SAP WebIDE 将SAP UI5 应用部署到 SAP ABAP Netweaver 服务器上
  7. Hbase PageFilter 取出数量不准确问题
  8. 数仓架构的持续演进与发展 — 云原生、湖仓一体、离线实时一体、SaaS模式
  9. 传统form表单提交方式的文件上传与文件存储
  10. VS2019/openGL/freeglut配置
  11. xlrd,xlwt操作Excel实例
  12. 联想笔记本linux驱动,联想为Linux驱动的计算机提供自动固件更新
  13. 地图开发中用到的比例尺和分辨率
  14. APPLE 知识模块初步设计
  15. 大话GraphQL新手上车
  16. 47、backtrader的一些基本概念---技术指标(indicator)的使用教程
  17. 10 杀手级的网络管理员的工具
  18. 微信小程序App.js应用
  19. uva 1471 Defense Lines
  20. 电子邮件客户端程序设计与实现 c++ 计网课设

热门文章

  1. Node.js async/awit
  2. 计算机网络:DV 算法中避免环路的六大机制
  3. portlet java_比较 JSR 168 Java Portlet 规范与 IBM Portlet API
  4. 对于operation操作的理解
  5. 话说QQ插件的精简概要
  6. jetcache官网教程
  7. R绘图的文本大小,字体字号,字样,图形边界设置及坐标轴
  8. #前端常见算法的JS实现
  9. 一个从无到有的研发管理体系-精益数字化管理
  10. 【使用两个栈实现队列】