本文转载至 http://blog.csdn.net/wwang196988/article/details/7542918

 
在iPhone应用程序中,我们经常要用去网络下载一些文件,比如xml,图片等等!但是往往我们经常是需要反复读取这部分数据,或者我们要写一些文件在沙箱中,供下次打开程序的时候使用,这时候我们就需要用到缓存文件(读写文件),今天和大家分享一个Demo,用来缓存从网上下载下来的图片和xml;

项目背景:
下载从网络下载图片,并写在temp目录下,temp目录下的文件在程序退出时会被清空,所以用来写本次要用的缓存内容很合适(我这么觉得)。
1、从一个url下载图片
NSURL *url = [NSURL URLWithString:@"http://*****.png"];

NSData *data = [NSData dataWithContentsOfURL:url];

UIImage *img = [UIImage imageWithData:data];

注:这是一种最普通最普通的图片下载方式,这种方式不太好,稍后我将和大家分享一下其他的下载方式

2、获取temp目录

-(NSString *)GetTempPath:(NSString*)filename{

NSString *tempPath = NSTemporaryDirectory();

return [tempPath stringByAppendingPathComponent:filename];

}

我们将要缓存的图片名传进去,得到完整的temp路径

3、将数据写入改路径

[data writeToFile:[self GetTempPath:@"test.png"] atomically:NO];

这里用到NSData的writeToFile方法,可以在API中找到更详细的解释

第一个参数:将数据写入的路径

第二个参数:是否覆盖原有文件YES为覆盖 NO则相反

方法返回一个BOOL类型的值,YES表示写入成功

4、判断路径下的文件是否已经存在

-(BOOL)isExistsFile:(NSString *)filepath{

NSFileManager *filemanage = [NSFileManager defaultManager];

return [filemanage fileExistsAtPath:filepath];

}

BOOL exist = [self isExistsFile:[self GetTempPath:@"test.png"]];

exist=YES表示文件已经存在

NO表示不存在

到这里,同类的问题都可以解决了吧。当然不仅仅是可以将图片保存到temp目录,其他的文件也行。当然也可以保存在document目录,这样我们可以长时间持有它。稍后将和大家分享document目录下的保存读取操作!

iPhone缓存网络数据的更多相关文章

  1. 如何在Windows系统上用抓包软件Wireshark截获iPhone等网络通讯数据

    http://www.jb51.net/os/windows/189090.html 今天给大家介绍一种如何在Windows操作系统上使用著名的抓包工具软件Wireshark来截获iPhone.iPa ...

  2. 分布式缓存系统 Memcached 状态机之网络数据读取与解析

    整个状态机的基本流程如下图所示,后续分析将按该流程来进行. 接上节分解,主线程将接收的连接socket分发给了某工作线程,然后工作线程从任务队列中取出该连接socket的CQ_ITEM,开始处理该连接 ...

  3. 三种经典iPhone上网络抓包方法详解

    此文章来自:听云博客 很多时候需要网络抓包分析,在iPhone上抓包稍有不同,下面介绍三种常用的方式.分析工具以wireshark为例. 一.最简单的方式:用PC作为热点,在PC上抓包 优点:简单 缺 ...

  4. Android利用Fiddler进行网络数据抓包

    最新最准确内容建议直接访问原文:Android利用Fiddler进行网络数据抓包 主要介绍Android及IPhone手机上如何进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信 ...

  5. NSURLSession访问网络数据

    1.NSMutableURLRequest的设置 //创建NSMutableURLRequest对象 NSMutableURLRequest *request = [NSMutableURLReque ...

  6. Android之ListView&Json加载网络数据

    使用到的主要内容: 1.Json 解析网络数据 2.异步任务加载图片和数据 3.ListView 的内存空间优化(ConvertView)和运行时间优化(ViewHolder) 4.ListView ...

  7. Python黑客编程基础3网络数据监听和过滤

    网络数据监听和过滤 课程的实验环境如下: •      操作系统:kali Linux 2.0 •      编程工具:Wing IDE •      Python版本:2.7.9 •      涉及 ...

  8. Android 手机卫士--构建服务端json、请求网络数据

    本文地址:http://www.cnblogs.com/wuyudong/p/5900384.html,转载请注明源地址. 数据的传递 客户端:发送http请求 http://www.oxx.com/ ...

  9. android—获取网络数据

    取网络数据主要靠发交易(或者说请求,接口等),而这些交易由java中的网络通信,HttpURLConnection和HttpClient实现,以下是具体例子.   大家都知道,网络通信,发送请求有两种 ...

随机推荐

  1. 排序算法的实现(冒泡,选择,插入 O(N*N)--理解方法实现

    以前也看过很多排序算法的原理,每次都想自己实现一下,一直都再拖,现在着牛课网学习算法课程,希望自己能够坚持练习. //对于一个int数组,请编写一个选择冒泡算法,对数组元素排序. //给定一个int数 ...

  2. ES6方面重点摘要

    1.变量声明(1)内层变量覆盖外层变量(即后面的覆盖前面的)(2)循环变量的声明,i值在全局范围内有效,所以最后输出的都是最后一轮i的值(3)let.const的引入,为JS增加了块级作用域的概念(c ...

  3. Java反射学习总结五(Annotation(注解)-基础篇)

    Annotation(注解)简单介绍: 注解大家印象最深刻的可能就是JUnit做单元測试,和各种框架里的使用了. 本文主要简介一下注解的用法,下篇文章再深入的研究. annotation并不直接影响代 ...

  4. 【Hadoop】YARN 原理、MR本地&YARN运行模式

    1.基本概念 2.YARN.MR交互流程 3.源码解读

  5. 【JUnit】Junit命令行执行、参数化执行、Main方法执行

    参考资料: main方法执行:http://stackoverflow.com/questions/2543912/how-do-i-run-junit-tests-from-inside-my-ja ...

  6. 码云的GIT操作

    git操作 git initgit add .git commit -m ""git remote add origin https://git.coding.net/jessei ...

  7. ansible自动化工具使用

    1.服务端配置 安装即可,无需启动,在安装ansible之前需要配置epel源 [root@m01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirr ...

  8. iOS小技巧 - 如何使UIView可以绑定点击事件

    让我们这次直接进入正题,有时候我们想做以下这种界面: 目前我就想到三种方案: 做一个tableview,然后组织cell的界面如上图所示 做一个button子类,使得button的界面能如上图所示 做 ...

  9. H5性能调优

    概述 PC优化手段在Mobile侧同样适用 在Mobile侧我们提出三秒种渲染完成首屏指标 基于第二点,首屏加载3秒完成或使用Loading 基于联通3G网络平均338KB/s(2.71Mb/s),所 ...

  10. SOYO的主板如何进入BIOS系统

    1 开机按Del键进入BIOS系统   2 进入Advanced BIOS Features   3 选择 Hard Disk Boot Priority 按ENTER   4 选择要启动的设备,比如 ...