iOS 之 文件缓存
对于信息量不是太大的数据,可以使用文件缓存来处理。文件缓存可以缓存字典和数组。
步骤一:创建路径
路径要一级一级往下创建,基本不用考虑创建失败的情况。但是如果创建失败了要怎么做呢?按道理应该提示出来。结束往下的操作,因为没有办法继续创建下面的目录。
创建路径要放到~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 之 文件缓存的更多相关文章
- iOS 清理文件缓存
本文摘自:<msp的昌伟哥哥-iOS开发-清理缓存功能的实现>摘下来的目的就是为了能够学习.还望看到文章的同学,前往原创的博客园.感谢msp的昌伟哥哥的分享精神. 移动应用在处理网络资源时 ...
- iOS自定义弹出视图、收音机APP、图片涂鸦、加载刷新、文件缓存等源码
iOS精选源码 一款优秀的 聆听夜空FM 源码 zhPopupController 简单快捷弹出自定义视图 WHStoryMaker搭建美图(贴纸,涂鸦,文字,滤镜) iOS cell高度自适应 有加 ...
- iOS之 清理缓存
作为一个开发者,对于缓存的清理也是理所应当的需要的.这次就简单的谈一下iOS中对于缓存的清理方法. 我们清理缓存通常是在这三种方式下进行的: (1)项目中的清理缓存按钮 (2)点击退出app按钮时清理 ...
- iOS应用文件夹
IOS5多了一个比较重要的功能iCloud,但是同时也出现一个问题,很多的APP都把很大量的数据存在APP底下的Documents(/Documents )文件夹里面,这样苹果会reject掉你的AP ...
- iOS中dyld缓存的实现原理是怎样的?
在iOS开发中,为了提升系统的安全性,很多系统库文件都被打包到一个缓存的文件当中即dyld缓存,那大家对dyld缓存了解多少呢?今天小编将和大家分享的就是一位iOS大神对dyld缓存的使用分析,一起来 ...
- iOS - ImageCache 网络图片缓存
1.ImageCache 使用内存缓存方式: 使用沙盒缓存方式: 使用网络图片第三方库方式: SDWebImage: iOS 中著名的网络图片处理框架 包含的功能:图片下载.图片缓存.下载进度监听.g ...
- 玩转iOS开发 - 数据缓存
Why Cache 有时候.对同一个URL请求多次,返回的数据可能都是一样的,比方server上的某张图片.不管下载多少次,返回的数据都是一样的. 上面的情况会造成下面问题 (1)用户流量的浪费 (2 ...
- iOS html5使用缓存并及时更新方案总结
最近一段时间研究了一下H5在iOS移动端表现时使用缓存并可及时更新方案,总结如下: 一.使用Webview自带缓存机制 当我们使用webview加载html资源时的,本质上就是一个向服务器索取资源的h ...
- iOS:文件操作相关(18-03-23更)
0.iOS文件系统 1.工程内文件 2.文件夹管理 3.文件操作 4.NSCache 附录: 1.沙盒文件夹.文件大小 2.清除沙盒 Library / Cache 下所有数据 3.测试plist 0 ...
随机推荐
- win7 系统保留分区 BCDedit
系统保留分区简介编辑 “系统保留”分区示意图 Windows Vista/7出于安全考虑,在新装Windows Vista/7系统过程中,如果利用光盘的分区工具给硬盘分区时,系统默认的将一部分(100 ...
- Android--->LinearLayout页面布局方式
main.xml布局方式 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns ...
- HDU 2846 Repository(字典树)
字典树较为复杂的应用,我们在建立字典树的过程中需要把所有的前缀都加进去,还需要加一个id,判断它原先是属于哪个串的.有人说是AC自动机的简化,但是AC自动机我还没有做过. #include<io ...
- docker 容器日志集中 ELK + filebeat
docker 容器日志集中 ELK ELK 基于 ovr 网络下 docker-compose.yaml version: '2' networks: network-test: external: ...
- swift之向ftp服务器传文件
在 mac 上如何使用 xcode, swift 语言开发一个向 ftp 服务器上传文件的工具? 使用的是第三方库 Rebekka,下载地址为:https://github.com/Constanti ...
- Win8/8.1 下映像管理和恢复环境的配置
以前遇过不少次这种问题了,抽空记下来...... 介绍两个东西: 1. dism 部署映像服务和管理工具 主要用途是枚举.安装.卸载.配置和更新 Windows 映像中的功能和程序包. 简单地说就是有 ...
- POJ 2653 Pick-up sticks
计算几何,判断线段相交 注意题目中的一句话:You may assume that there are no more than 1000 top sticks. 我认为是没有描述清楚的,如果不是每次 ...
- aspx界面中,怎么调用后台的方法,处理某个数据
<%# GetUrl(Eval("Url").ToString(),Eval("ID").ToString()) %> GetUrl() 就是后台的 ...
- (简单) POJ 3321 Apple Tree,树链剖分+树状数组。
Description There is an apple tree outside of kaka's house. Every autumn, a lot of apples will grow ...
- LPC1788系统时钟初始化
#ifndef __SYS_H_ #define __SYS_H_ #include "common.h" #define SystemCoreClock 120000000 ...