对于信息量不是太大的数据,可以使用文件缓存来处理。文件缓存可以缓存字典和数组。

步骤一:创建路径

  路径要一级一级往下创建,基本不用考虑创建失败的情况。但是如果创建失败了要怎么做呢?按道理应该提示出来。结束往下的操作,因为没有办法继续创建下面的目录。

  创建路径要放到~Document下面,在真机上才能运行。

  创建路径只是目录,文件名称还要在读写时附加上。

//创建文件管理器
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL isDirectory;
NSError *error = nil; //初始化存储路径
NSString *mapPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/couponCatch"]; if (![fileManager fileExistsAtPath:mapPath isDirectory:&isDirectory]) {
[fileManager createDirectoryAtPath:mapPath withIntermediateDirectories:YES attributes:nil error:&error];
}

  参数:withIntermediateDirectories  ,YES 如果文件夹不存在,则创建, 如果存在表示可以覆盖;  NO 如果文件夹不存在,则创建, 如果存在不可以覆盖。

  那么覆盖路径,也算是删除路径下的所有文件了。上面代码中,可以不用判断,直接创建就可以了,只是把withIntermediateDirectories设置成NO,就可以了。设置成YES的时候,表示要删除其下的文件夹和文件,慎用。

步骤二:写文件

  写文件是用NSArchive来归档,该类可以归档任何类型。

  归档文件有两种接口:

NSData * data = [NSKeyedArchiver archivedDataWithRootObject:self];

BOOL didWriteSuccessfull = [data writeToFile:path atomically:YES];
[NSKeyedArchiver archiveRootObject:<#(nonnull id)#> toFile:<#(nonnull NSString *)#>]

  看上去,这两种接口差别不大,第二种更像是第一种的组合版本。第一种多了一个参数,atomically,原子级。不知道这有什么作用。

步骤三:读文件

NSData * data = [NSData dataWithContentsOfFile:path];
[NSKeyedUnarchiver unarchiveObjectWithData:data];

删除文件

NSArray *contents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];
NSEnumerator *eDir = [contents objectEnumerator];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString* fileName;
while (fileName = [eDir nextObject])
{
if (fileName!=nil)
{
[fileManager removeItemAtPath:[path stringByAppendingPathComponent:fileName] error:NULL];
}
}

iOS 之 文件缓存的更多相关文章

  1. iOS 清理文件缓存

    本文摘自:<msp的昌伟哥哥-iOS开发-清理缓存功能的实现>摘下来的目的就是为了能够学习.还望看到文章的同学,前往原创的博客园.感谢msp的昌伟哥哥的分享精神. 移动应用在处理网络资源时 ...

  2. iOS自定义弹出视图、收音机APP、图片涂鸦、加载刷新、文件缓存等源码

    iOS精选源码 一款优秀的 聆听夜空FM 源码 zhPopupController 简单快捷弹出自定义视图 WHStoryMaker搭建美图(贴纸,涂鸦,文字,滤镜) iOS cell高度自适应 有加 ...

  3. iOS之 清理缓存

    作为一个开发者,对于缓存的清理也是理所应当的需要的.这次就简单的谈一下iOS中对于缓存的清理方法. 我们清理缓存通常是在这三种方式下进行的: (1)项目中的清理缓存按钮 (2)点击退出app按钮时清理 ...

  4. iOS应用文件夹

    IOS5多了一个比较重要的功能iCloud,但是同时也出现一个问题,很多的APP都把很大量的数据存在APP底下的Documents(/Documents )文件夹里面,这样苹果会reject掉你的AP ...

  5. iOS中dyld缓存的实现原理是怎样的?

    在iOS开发中,为了提升系统的安全性,很多系统库文件都被打包到一个缓存的文件当中即dyld缓存,那大家对dyld缓存了解多少呢?今天小编将和大家分享的就是一位iOS大神对dyld缓存的使用分析,一起来 ...

  6. iOS - ImageCache 网络图片缓存

    1.ImageCache 使用内存缓存方式: 使用沙盒缓存方式: 使用网络图片第三方库方式: SDWebImage: iOS 中著名的网络图片处理框架 包含的功能:图片下载.图片缓存.下载进度监听.g ...

  7. 玩转iOS开发 - 数据缓存

    Why Cache 有时候.对同一个URL请求多次,返回的数据可能都是一样的,比方server上的某张图片.不管下载多少次,返回的数据都是一样的. 上面的情况会造成下面问题 (1)用户流量的浪费 (2 ...

  8. iOS html5使用缓存并及时更新方案总结

    最近一段时间研究了一下H5在iOS移动端表现时使用缓存并可及时更新方案,总结如下: 一.使用Webview自带缓存机制 当我们使用webview加载html资源时的,本质上就是一个向服务器索取资源的h ...

  9. iOS:文件操作相关(18-03-23更)

    0.iOS文件系统 1.工程内文件 2.文件夹管理 3.文件操作 4.NSCache 附录: 1.沙盒文件夹.文件大小 2.清除沙盒 Library / Cache 下所有数据 3.测试plist 0 ...

随机推荐

  1. hbase port

    From "Jonathan Hsieh (JIRA)" <j...@apache.org> Subject [jira] [Updated] (HBASE-10123 ...

  2. docker私有仓库搭建(ubuntu 14.04和centos7)

    最近是在做一个关于docker云化的项目,马上就要开始实战.下午先做了一个私有仓库搭建的实验,先大概做个笔记,有兴趣的蛮看一下吧. 先在所有机子上都安装上docker,我的是两台ubuntu,分别是1 ...

  3. dom4j解析xml实例

    dom4j是一个java的XML API,类似jdom,用来读写XML文件,它性能优异.功能强大和极易使用等特点 所用jar包:dom4j-1.6.1.jar 需要解析的xml文件:people.xm ...

  4. linux 备份系统

    切换到root用户 切换到根目录 tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz -- ...

  5. 二分图匹配之最佳匹配——KM算法

    今天也大致学了下KM算法,用于求二分图匹配的最佳匹配. 何为最佳?我们能用匈牙利算法对二分图进行最大匹配,但匹配的方式不唯一,如果我们假设每条边有权值,那么一定会存在一个最大权值的匹配情况,但对于KM ...

  6. PAT (Advanced Level) 1042. Shuffling Machine (20)

    简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  7. Cannot find PHPUnit in include path phpstorm

    This is the way to do it without using composer, and using your global phpunit.Phpunit now comes wit ...

  8. JAVA基础--线程

    sleep和wait的区别: 1. sleep是Thread的方法, wait是object的方法 2.  sleep占着CPU睡觉, wait等待CPU,不占用CPU 线程是一个程序内部的顺序控制流 ...

  9. Milk Pails

    Milk Pails 题目描述 Farmer John has received an order for exactly M units of milk (1≤M≤200) that he need ...

  10. CSS实现三角形方法二--border+content

    方法说明: 1.将一个div块的内容设置为空(content=" "), 2.设置它的边框(上下左右)颜色为透明(transparent), 3.设置它的左侧边框颜色为pink. ...