IOS 缓存文件的清除实现代码_IOS

移动互联网 APP 的应用开发,必须要时刻注意用户体验,以免造成APP 或者手机及其他移动设备的卡死情况,以下是对缓存文件的处理。

移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为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];

}

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ios
缓存文件的清除
ios 清除缓存完整代码、ios清除应用缓存代码、ios清除缓存代码、ios清除本地缓存代码、ios开发 清除缓存代码,以便于您获取更多的相关知识。

时间: 2024-12-27 20:21:43

IOS 缓存文件的清除实现代码_IOS的相关文章

iOS AFNetworking中cookie重定向代码_IOS

// 1. 取出需要同步的url (登录请求中返回的重定向地址) BESTHttpItem *httpItem = [BESTHttpHelper sharedHelper].curHttpItem; NSString *url = [NSString stringWithFormat:@"%@/#/login", httpItem.frontend_addr]; // 2. 取出当前的headerFields NSDictionary *headerFields = [NSHTTPC

iOS异步下载图片实例代码_IOS

写在前面 在iOS开发中,无论是在UITableView还是在UICollectionView中,通过网络获取图片设置到cell上是较为常见的需求.尽管有很多现存的第三方库可以将下载和缓存功能都封装好了供开发者使用,但从学习的角度出发,看懂源码,理解其中的原理,结合自身的实际需求写出自己的代码是很必要的.在刚结束的Demo中,有用到异步图片下载功能,这篇笔记就是对整个实现的简单整理. 基本思路 •cell中添加一个UIImageView •cell拥有url,发起下载请求,注册下次完成通告,在通

iOS UITableView 拖动排序实现代码_IOS

UITbableView作为列表展示信息,除了展示的功能,有时还会用到删除,排序等功能,下面就来讲解一下如何实现排序.  排序是当表格进入编辑状态后,在单元格的右侧会出现一个按钮,点击按钮,就可以拖动单元格,移动位置,进行手动排序.  使用系统自带拖动排序功能的步骤:  1.让tableView进入编辑状态,也就是设置它的editing为YES  2.返回编辑模式,也就是实现UITableViewDelegate中的tableview:editingStyleForRowAtIndexPath:

iOS获取手机ip地址代码_IOS

本文实例为大家分享了iOS获取手机ip地址的具体代码,供大家参考,具体内容如下 #import <ifaddrs.h> #import <arpa/inet.h> // Get IP Address - (NSString *)getIPAddress { NSString *address = @"error"; struct ifaddrs *interfaces = NULL; struct ifaddrs *temp_addr = NULL; int s

ios系统下删除文件的代码_IOS

方法一:这段objective c代码用于删除指定路径的文件 if ([fileManager removeItemAtPath:@"FilePath" error:NULL]) { NSLog(@"Removed successfully"); } 方法二: NSFileManager *defaultManager; defaultManager = [NSFileManager defaultManager]; [defaultManager removeFi

IOS 改变键盘颜色代码_IOS

IOS 改变键盘颜色的代码 iPhone和iPod touch的键盘颜色其实是可以通过代码更改的,这样能更匹配App的界面风格,下面是改变iPhone键盘颜色的代码. 1.只有Number Pad和Phone Pad这两种数字键盘才有效果 2.设置Appearance为Alert 复制代码 代码如下: - (void)textFieldDidBeginEditing:(UITextField *)textField{     NSArray *ws = [[UIApplication share

这个工具可以清除软件代码项目中的硬编码密钥

本文讲的是这个工具可以清除软件代码项目中的硬编码密钥,Truffle Hog可以在源代码存储库内找到20个字符或以上的访问令牌和密钥 安全研究人员开发了一种新工具,这一工具可以自动检测软件项目中已被硬编码的敏感访问密钥. 这种名为Truffle Hog( https://github.com/dxa4481/truffleHog )的工具由美国研究员迪伦·艾雷用Python语言开发.它可以通过扫描源代码库里包含20以上字符的高熵值的字符串来搜寻硬编码的访问密钥.高香农熵,即我们通常所说的信息熵,

iOS界面布局之三——纯代码的autoLayout及布局动画

iOS界面布局之三--纯代码的autoLayout及布局动画 一.引言         关于界面布局,apple的策略已经趋于成熟,autolayout的优势在开发中也已经展现的淋漓尽致.除了使用storyBoard进行布局约束的拖拽,有时我们也需要在代码中进行autolayout的布局设置,Masonry库可以方便的创建约束属性,实际上,我们也没有必要再使用系统原生的代码来创建和设置约束,这篇博客只作为使用的方法备忘.前几篇布局介绍的链接如下: 使用autoresizing进行界面布局:htt

IOS高德地图清除部分大头针?????

问题描述 IOS高德地图清除部分大头针????? 高德地图上怎么清除部分大头针???点击自定制的气泡获取当前大头针的经纬度???求大神指教