之前做缓存,没有考虑过这个具体的实现。

移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage。

但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯、购物、阅读类app的标配功能。

今天介绍的离线缓存功能的实现,主要分为缓存文件大小的获取、删除缓存文件的实现。

获取缓存文件的大小

由于缓存文件存在沙箱中,我们可以通过NSFileManager API来实现对缓存文件大小的计算。

计算单个文件大小

 

+(float)fileSizeAtPath:(NSString *)path{
NSFileManager *fileManager=[NSFileManager defaultManager];
if([fileManager fileExistsAtPath:path]){
long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize;
return size/1024.0/1024.0;
}
return ;
}

计算目录大小

 

+(float)folderSizeAtPath:(NSString *)path{
NSFileManager *fileManager=[NSFileManager defaultManager];
float folderSize;
if ([fileManager fileExistsAtPath:path]) {
NSArray *childerFiles=[fileManager subpathsAtPath:path];
for (NSString *fileName in childerFiles) {
NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
folderSize +=[FileService fileSizeAtPath:absolutePath];
}
     //SDWebImage框架自身计算缓存的实现
folderSize+=[[SDImageCache sharedImageCache] getSize]/1024.0/1024.0;
return folderSize;
}
return ;
}

清理缓存文件

直接用SDWebImage框架,它自己实现了清理缓存操作,我们可以直接调用。

+(void)clearCache:(NSString *)path{
NSFileManager *fileManager=[NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:path]) {
NSArray *childerFiles=[fileManager subpathsAtPath:path];
for (NSString *fileName in childerFiles) {
//如有需要,加入条件,过滤掉不想删除的文件
NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
[fileManager removeItemAtPath:absolutePath error:nil];
}
}
[[SDImageCache sharedImageCache] cleanDisk];
}

最新文章

  1. 正则表达式在python中的应用
  2. Discuz! X upgrade/converter GETSHELL Vulnerability Via /convert/include/global.func.php Inject Special Symbol Into /convert/data/config.inc.php
  3. C#设计模式(7)——适配器模式(Adapter Pattern)
  4. QFile文件操作-QT
  5. DOM 表单应用
  6. CentOS 6.5下Git服务器搭建
  7. DP——最优三角形剖分
  8. CSS2简写代码(优化)
  9. 使用bootstrap响应式布局——手机屏幕中横向滚动显示标签页选项
  10. ASP.NET Excel导入Sql Server数据库(转)
  11. move_uploaded_file
  12. idea+maven下jrebel的安装破解
  13. 安装和强行卸载fuse
  14. Shell命令 中|| &&使用
  15. EOS开发基础之六:使用cleos命令行客户端操作EOS——智能合约之eosio.msig和eosio.system
  16. HTTP ERROR 400 Bad Request
  17. MySQL查询当天、本周,本月,上一个月的数据
  18. 通过Java发送邮件和接收邮件的工具类
  19. CentOS7安装步骤详解
  20. php7 扩展模块添加

热门文章

  1. 转:Autodesk 2017软件下载+注册机+破解方法(持续更新)
  2. Linux网络管理2---(网络环境查看命令、网络测试命令)
  3. vue
  4. 给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。
  5. UWP 设备分辨率
  6. 《DSP using MATLAB》示例Example5.10
  7. iOS通知的使用
  8. 使用代理和block写一个alertView
  9. web Worker使js实现‘多线程’?
  10. Git的简单使用教程