文档章节

iOS缓存清理思路的实现

不孤独的美食家
 不孤独的美食家
发布于 2015/09/14 11:37
字数 579
阅读 326
收藏 2

首先在讲缓存清理之前讲讲文件管理的几个知识点             

                                           第一部分 文件管理几个常用的方法

一 比较两个文件的内容是否一样

/* -contentsEqualAtPath:andPath: does not take into account data stored in the resource fork or filesystem extended attributes.

 */

- (BOOL)contentsEqualAtPath:(NSString *)path1 andPath:(NSString *)path2;


二 路径中的文件是否存在

/* The following methods are of limited utility. Attempting to predicate behavior based on the current state of the filesystem or a particular file on the filesystem is encouraging odd behavior in the face of filesystem race conditions. It's far better to attempt an operation (like loading a file or creating a directory) and handle the error gracefully than it is to try to figure out ahead of time whether the operation will succeed.

 */

- (BOOL)fileExistsAtPath:(NSString *)path;


三 移除路径中文件内容

/* These methods replace their non-error returning counterparts below. See the NSFileManagerDelegate protocol below for methods that are dispatched to the NSFileManager instance's delegate.

 */

- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error


四 从一个文件中读取数据

/* These methods are provided here for compatibility. The corresponding methods on NSData which return NSErrors should be regarded as the primary method of creating a file from an NSData or retrieving the contents of a file as an NSData.

 */

- (NSData *)contentsAtPath:(NSString *)path;



五 从缓存路径中取出缓存文件内容,该返回值是数组,用数组接收即可


/* subpathsAtPath: returns an NSArray of all contents and subpaths recursively from the provided path. This may be very expensive to compute for deep filesystem hierarchies, and should probably be avoided.

 */

- (NSArray *)subpathsAtPath:(NSString *)path;



六 根据文件名拼接路径

- (NSString *)stringByAppendingPathComponent:(NSString *)str;




七 根据路径计算路径中文件的大小


long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize;



                           第二部分  缓存清理思路的文字描述


第一步 拿到需要清理的缓存文件路径


 NSString* filePath =[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];


第二步 创建文件管理者


 NSFileManager *fileManager=[NSFileManager defaultManager];

 

第三步 判断缓存文件路径中的文件内容是否存在


if ([fileManager fileExistsAtPath:path])

第四步 遍历缓存路径,拿到路径中所有文件数组

NSArray *childerFiles = [fileManager subpathsAtPath:path];

第五步  遍历数组,拼接数组

NSString *absolutePath=[path stringByAppendingPathComponent:fileName];


第六步  计算文件大小


long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize;


                          第三部分 缓存清理思路流程图





© 著作权归作者所有

不孤独的美食家
粉丝 88
博文 159
码字总数 48705
作品 1
长沙
高级程序员
私信 提问
2018 iOS 面试题大全(补充完整版)

原文地址:2018 iOS 面试题大全 由于原作者并没有继续更新,这里我转过来继续更新下 这个栏目将持续更新--请iOS的小伙伴关注! 1、iOS 应用导航模式有哪些? 2、iOS 中持久化方式有哪些? 3、...

Theendisthebegi
2018/11/15
0
0
EasyIOS 2.0 发布,基于 MVVM 的 IOS 开发框架

全新基于MVVM(Model-View-ViewModel)编程模式架构,开启EasyIOS开发函数式编程新篇章。 EasyIOS 2.0类似AngularJs,最为核心的是:MVVM、ORM、模块化、自动化双向数据绑定、等等 关于有疑问什...

墨水
2014/07/30
9.8K
9
AeroGear iOS SDK v2.2 发布!

AeroGear iOS SDK v2.2 发布! 更新内容: 1. Synchronisation (new): AeroGear 1.0.0-alpha1 sync 发布,AeroGear 添加了一些新特性到工具链找那个:数据同步。 iOS 数据同步包括: aeroge...

叶秀兰
2015/03/17
857
0
EasyIOS 2.1 发布,优化网络请求与ORM操作

EasyIOS 2.1发布 此版本相较2.0更新内容如下: 1.优化ORM操作 ,丰富数据库查询方法 2.修改网络请求,选用大家熟悉的AFNetworking 移除 MKNetWorkKit 3.增加正则表达式操作类 4.集成更加友好...

墨水
2014/09/12
2.9K
0
Facebook iOS 新版开发手记:两倍速度的背后

Facebook上周发布了新版iOS应用,号称速度提升两倍。Facebook工程师Jonathan Dan在Facebook官方页面中撰文,介绍了新版iOS应用、Facebook iOS应用的发展历程以及开发思路。《创事记》特选取此...

oschina
2012/08/30
2.8K
13

没有更多内容

加载失败,请刷新页面

加载更多

MainThreadSupport

MainThreadSupport EventBus 3.0 中的代码片段. org.greenrobot.eventbus.MainThreadSupport 定义一个接口,并给出默认实现类. 调用者可以在EventBus的构建者中替换该实现. public interface ...

马湖村第九后羿
26分钟前
2
0
指定要使用的形状来代替文字的显示

控制手机键盘弹出的功能只能在ios上实现,安卓是实现不了的,所以安卓只能使用type类型来控制键盘类型,例如你要弹出数字键盘就使用type="number",如果要弹出电话键盘就使用type="tel",但这...

前端老手
36分钟前
3
0
总结:Raft协议

一、Raft协议是什么? 分布式一致性算法。即解决分布式系统中各个副本数据一致性问题。 二、Raft的日志广播过程 发送日志到所有Followers(Raft中将非Leader节点称为Follower)。 Followers收...

浮躁的码农
43分钟前
3
0
Flask-admin Model View字段介绍

Model View字段介绍 can_create = True 是否可以创建can_edit = True 是否可以编辑can_delete = True 是否可以删除list_template = 'admin/model/list.html' 修改显......

dillonxiao
今天
5
0
从AnnotationTransactionAspect开始rushSpring事务

0. Spring 事务 with LTW 0.1. Spring 事务 With LTW的原因: Pure Proxy-base mode有缺陷,其失效原因分析及使用方法及运行机制(LoadTimeWeaverBeanDefinitionParser和 AspectJWeavingEnable......

Aruforce
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部