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

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

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

1. 获取缓存文件的大小
-( float )readCacheSize
{
    NSString *cachePath = [NSSearchPathForDirectoriesInDomains (NSCachesDirectory , NSUserDomainMask , YES) firstObject];
    return [ self folderSizeAtPath :cachePath];
}

由于缓存文件存在沙箱中,我们可以通过NSFileManager API来实现对缓存文件大小的计算。
// 遍历文件夹获得文件夹大小,返回多少 M
- ( float ) folderSizeAtPath:( NSString *) folderPath{
    
    NSFileManager * manager = [NSFileManager defaultManager];
    if (![manager fileExistsAtPath :folderPath]) return 0 ;
    NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath :folderPath] objectEnumerator];
    NSString * fileName;
    long long folderSize = 0 ;
    while ((fileName = [childFilesEnumerator nextObject]) != nil ){
        //获取文件全路径
        NSString * fileAbsolutePath = [folderPath stringByAppendingPathComponent :fileName];
        folderSize += [ self fileSizeAtPath :fileAbsolutePath];
    }

return folderSize/( 1024.0 * 1024.0);
    
}

// 计算 单个文件的大小
- ( long long ) fileSizeAtPath:( NSString *) filePath{
    NSFileManager * manager = [NSFileManager defaultManager];
    if ([manager fileExistsAtPath :filePath]){
        return [[manager attributesOfItemAtPath :filePath error : nil] fileSize];
    }
    return 0;
}

2. 清除缓存
- (void)clearFile
{
    NSString * cachePath = [NSSearchPathForDirectoriesInDomains (NSCachesDirectory , NSUserDomainMask , YES ) firstObject];
    NSArray * files = [[NSFileManager defaultManager ] subpathsAtPath :cachePath];
    //NSLog ( @"cachpath = %@" , cachePath);
    for ( NSString * p in files) {
        
        NSError * error = nil ;
        //获取文件全路径
        NSString * fileAbsolutePath = [cachePath stringByAppendingPathComponent :p];
        
        if ([[NSFileManager defaultManager ] fileExistsAtPath :fileAbsolutePath]) {
            [[NSFileManager defaultManager ] removeItemAtPath :fileAbsolutePath error :&error];
        }
    }
    
    //读取缓存大小
    float cacheSize = [self readCacheSize] *1024;
    self.cacheSize.text = [NSString stringWithFormat:@"%.2fKB",cacheSize];

}

转载于:https://www.cnblogs.com/kakaluote123/p/5983369.html

iOS获取缓存文件的大小并清除缓存相关推荐

  1. Android中获取缓存大小和清除缓存功能

    前言 本篇博客要给大家分享的如何获取应用缓存的大小和清除缓存的功能,我们知道我们应用当中经常会产生一些数据,比如图片的缓存,数据库文件,配置文件等等.我们开发产品的时候,可能会有这样的一个需求清除应用 ...

  2. Android记录20-获取缓存大小和清除缓存功能

    Android开发记录20-获取缓存大小和清除缓存功能 转载请注明:IT_xiao小巫  博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要给大家分享的如何获取应用缓 ...

  3. android 自动清理缓存图片吗,Android中Glide获取缓存大小并清除缓存图片

    清除Glide缓存 Glide自带清除缓存的功能,分别对应Glide.get(context).clearDiskCache();(清除磁盘缓存)与Glide.get(context).clearMe ...

  4. 清楚linux缓存文件,Linux删除文件 清除缓存

    相信很多测试 经常会经历开发叫你清除缓存这种事. 那我们要怎么清呢? 一.首先,确认你要清除的缓存在哪个目录下,然后切换到该目录下,比如 我现在知道我的的缓存目录是在newerp这个目录下,则如图 二 ...

  5. IOS 获取网络图片的大小 改变 图片色值 灰度什么的方法集合

    直接上代码了 头文件 // 图片处理 0 半灰色 1 灰度 2 深棕色 3 反色 +(UIImage*)imageWithImage:(UIImage*)image grayLevelType:(UI ...

  6. iOS开发 - Swift实现清除缓存功能

    前言: 开发移动应用时,请求网络资源是再常见不过的功能.如果每次都去请求,不但浪费时间,用户体验也会变差,所以移动应用都会做离线缓存处理,其中已图片缓存最为常见. 但是时间长了,离线缓存会占用大量的手 ...

  7. iOS开发 - 清除缓存

    Bg 1)由于项目需求需要,需要在设置页面其中一个cell里面展示缓存大小,并提供清除缓存功能,发现之前自己一直使用的那个计算并清除缓存的方法并不完善,而且一直都有想要完善一下的想法,由此写下这篇文章 ...

  8. Android 程序常用功能《清除缓存》

    用户在使用我们所研发的App的时候,通常都会遇到如下的问题: 使用过程中可能会遇到应用程序或软件更新失败,因为用户的智能手机存储空间不足. 由于应用程序崩溃和其他问题,用户的数字设备运行速度比以前慢. ...

  9. IOS 获取缓存目录文件大小并清除

    1.获取缓存目录 //获取缓存文件路径 -(NSString *)getCachesPath{// 获取Caches目录路径NSArray *paths = NSSearchPathForDirect ...

最新文章

  1. 微信小程序开发工具的基本应用
  2. Linux下出现Read-only file system的解决办法
  3. ML之xgboost:基于xgboost(5f-CrVa)算法对HiggsBoson数据集(Kaggle竞赛)训练实现二分类预测(基于训练好的模型进行新数据预测)
  4. 用python读取stata文件及写入and注意事项
  5. python报错:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any(
  6. 《象与骑象人》总结一
  7. LamBda学习(一)
  8. 手动制作python安装模块
  9. centos 搭建php运行环境
  10. mysql加密复制_MySQL主从复制使用SSL加密
  11. HM个性化Recommendations--kaggle推荐比赛
  12. webpack + vue 学习看过的文章 网址
  13. 有没有测试牙齿需不需要修正的软件,三分钟教你测试自己的牙齿需不需要矫正!...
  14. Linux修改文件句柄数及vm.max_map_count、stack size
  15. 数学建模——MATLAB基础知识
  16. Python模拟登陆京东
  17. cond怎么读_cond condition是什么意思
  18. 几何学的公理化:塔尔斯基 pk 希尔伯特,谁能取胜?
  19. m4s格式,多线程爬B站视频
  20. Python Module — OpenAI ChatGPT API

热门文章

  1. jenkins Publish over SSH 的配置与使用
  2. Python Django手写分页代码
  3. 静态变量和实例变量的区别
  4. Spring注解方式配置切面类
  5. 【学亮IT手记】jQuery DOM删除操作
  6. CentOS 7 官方yum库安装 MySQL
  7. 字符串逆序的几种方法
  8. opencv mat release thrown_【OpenCV+Python】图像与视频处理入门
  9. 105.敏捷开发模型
  10. zabbix 安装_Zabbix的WEB安装与配置