IOS 获取缓存目录文件大小并清除
1.获取缓存目录
//获取缓存文件路径 -(NSString *)getCachesPath{// 获取Caches目录路径NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);NSString *cachesDir = [paths objectAtIndex:0];//指定文件名// NSString *filePath = [cachesDir stringByAppendingPathComponent:@"com.nickcheng.NCMusicEngine"];return cachesDir; }
2.计算缓存文件大小
//计算缓存文件的大小 - (long long) fileSizeAtPath:(NSString*) filePath{NSFileManager* manager = [NSFileManager defaultManager];if ([manager fileExistsAtPath:filePath]){// //取得一个目录下得所有文件名 // NSArray *files = [manager subpathsAtPath:filePath]; // NSLog(@"files1111111%@ == %ld",files,files.count); // // // 从路径中获得完整的文件名(带后缀) // NSString *exe = [filePath lastPathComponent]; // NSLog(@"exeexe ====%@",exe); // // // 获得文件名(不带后缀) // exe = [exe stringByDeletingPathExtension]; // // // 获得文件名(不带后缀) // NSString *exestr = [[files objectAtIndex:1] stringByDeletingPathExtension]; // NSLog(@"files2222222%@ ==== %@",[files objectAtIndex:1],exestr);return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];}return 0; }
清除缓存文件
dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) , ^{NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0];NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:cachPath];NSLog(@"files :%d",[files count]);for (NSString *p in files) {NSError *error;NSString *path = [cachPath stringByAppendingPathComponent:p];if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {[[NSFileManager defaultManager] removeItemAtPath:path error:&error];}}[self performSelectorOnMainThread:@selector(clearCacheSuccess) withObject:nilwaitUntilDone:YES];});-(void)clearCacheSuccess {NSLog(@"清理成功"); }
----------------------------------------------------------------------------------------------
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{//获取缓存目录NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0];NSError *error;if ([[NSFileManager defaultManager] fileExistsAtPath:cachPath]) {//如果存在就删除[[NSFileManager defaultManager] removeItemAtPath:cachPath error:&error];}[self performSelectorOnMainThread:@selector(clearCacheSuccess) withObject:nil waitUntilDone:YES];});//计算缓存文件的大小,多少M - (NSString *) fileSizeAtPath:(NSString*)cachPath{NSFileManager* manager = [NSFileManager defaultManager];if ([manager fileExistsAtPath:cachPath]){unsigned long long length = [[manager attributesOfItemAtPath:cachPath error:nil] fileSize];float ff = length/1024.0/1024.0; //换算成多少MNSString *size = [NSString stringWithFormat:@"%0.2fM",ff];return size;}return 0; }//清理缓存后刷新 -(void)clearCacheSuccess {NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0];NSString *size = [self fileSizeAtPath:cachPath];_setting.cache = size;[self.tableView reloadData];UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"清理成功" message:nil delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];[alertView show]; }
转载于:https://www.cnblogs.com/ZhangYuGe/p/4259765.html
IOS 获取缓存目录文件大小并清除相关推荐
- firefox的缓存目录位置、清除、修改
找到firefox缓存文件地址只需要一个命令,就是在Firefox浏览器的地址栏中输入 "about:cache"(输入引号中的部分),回车.就进入了"Informati ...
- iOS获取缓存文件的大小并清除缓存
移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage. 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类 ...
- iOS中使用c函数快速获取一个目录所占的空间大小
在编写iOS应用时,我们都会大量把服务器的接口调用数据或者图片数据进行缓存,为了更好的使用体验,有时候我们也会把各种缓存的数据所占的空间大小告诉用户,提供给用户参考,并让用户可以手动清除缓存数据,就像 ...
- android 自动清理缓存图片吗,Android中Glide获取缓存大小并清除缓存图片
清除Glide缓存 Glide自带清除缓存的功能,分别对应Glide.get(context).clearDiskCache();(清除磁盘缓存)与Glide.get(context).clearMe ...
- ios 获取沙河文件夹_关于 iOS 沙盒的目录结构和获取
沙盒目录结构 1. /xxName.app 应用程序的程序包目录,包含应用程序的本身. 2. /Documents/ 保存应用程序的重要数据文件和用户数据文件等.用户数据基本上都放在这个位置(例如从网 ...
- java获取iOS可写目录_ios 获取文件目录路径方法大全
我们的app在手机中存放的路径是:/var/mobile/Applications/4434-4453A-B453-4ADF535345ADAF344 后面的目录4434-4453A-B453-4AD ...
- Android中获取缓存大小和清除缓存功能
前言 本篇博客要给大家分享的如何获取应用缓存的大小和清除缓存的功能,我们知道我们应用当中经常会产生一些数据,比如图片的缓存,数据库文件,配置文件等等.我们开发产品的时候,可能会有这样的一个需求清除应用 ...
- IOS BLE 缓存清除
问题 在做一款基于蓝牙BLE通信的智能硬件,设备的蓝牙服务是动态变化的,发现 IOS 存在蓝牙服务缓存. 具体表现是,IOS 搜索发现过硬件的蓝牙服务后,断开蓝牙连接,设备重启更新了蓝牙服务, IOS ...
- 获取android应用缓存目录时遇到的问题
先说需求:调用系统相机拍照,将得到的图片上传到服务器, 问题1. 用context.getCacheDir()方法得到路径是/data/user/0/(项目包名)/cache,我在此目录通过file. ...
最新文章
- java十进制小数转化为二进制小数代码 乘二取整法_(四)改掉这些坏习惯,还怕写不出健壮的代码?...
- ubuntu下安装mssql(sqlserver)客户端及使用
- Spark Shuffle系列-----1. Spark Shuffle与任务调度之间的关系
- matlab rem与mod 的区别
- 中考 计算机录取 步骤,中考录取时间及录取流程详解
- 听音乐学英语之- I Need to Wake Up 奥斯卡获奖单曲:关注全球变暖
- Java性能优化之for循环
- xshell过期/安装教程
- ipadmini1从9.3.5降级8.4.1最有效的方法
- Spark独到见解--1、什么是Spark?及和MR的区别
- php 分享微博,PHP调用微博接口实现微博登录
- 菜鸟网络今日发布超级机器人旗舰仓
- mac电脑抹掉数据要多久_Mac系统如何恢复出厂设置
- linux uefi转mbr方法,如何将uefi改成mbr分区
- 【SQL】SQL语句积累
- 80端口跟8080端口有什么具体区别?
- 首页白屏解决与优化方案
- 实例分享--消消乐也能做H5游戏?
- MATLAB中不能正常使用输入法
- 基于线性序列机的SPI协议读写winbond公司flash芯片25Q16