本文转载至 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. crossapp的屏幕适配

    1.分辨率是的某个尺寸大小的屏幕里的像素点数ppi 2.crossapp茶用iphone4为基准比例值为1 3.其它分辨率设备的换算dp = px * 320/ 屏幕PPI 4.crossapp里点. ...

  2. JSP Response Set Status

    JSP Response Set Status In this tutorial you will learn about how to set the HTTP status code in JSP ...

  3. Java高级特性—JVM

    1).java监控工具使用 jconsole是一种集成了上面所有命令功能的可视化工具,可以分析jvm的内存使用情况和线程等信息 visualvm 提供了和jconsole的功能类似,提供了一大堆的插件 ...

  4. autocomplete属性在谷歌浏览器不起作用

    大家都知道autocomplete属性是表单字段中的HTML5新属性,该属性有两种状态值,分别为"on" 和 "off",该属性可省略:省略属性值后默认值为&q ...

  5. http接口测试—自动化测试框架设计

    转载:https://my.oschina.net/hellotest/blog/499719 一.测试需求描述 对服务后台一系列的http接口功能测试. 输入:根据接口描述构造不同的参数输入值(Js ...

  6. binder对于boolean类型的传递

    通过写了一个AIDL文件,查看自动生成的java文件代码得出的结论: 假如有:  boolean loadNativeSharedLib(String libPathName); 则对应的binder ...

  7. Oracle基础 索引

    一.索引 索引是一种快速访问数据的途径,可提高数据库性能.索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需的数据,就像书的目录,可以快速查找所需的信息,无须阅读整本书. (一)索引的分类 逻 ...

  8. vue-router 导航守卫

    记住参数或查询的改变并不会触发进入/离开的导航守卫.你可以通过观察 $route 对象来应对这些变化,或使用 beforeRouteUpdate 的组件内守卫. 1.全局守卫 const router ...

  9. 盘古分词demo,盘古分词怎么用

    1.下载PanGu.dll dll地址:http://download.csdn.net/detail/dhfekl/7493687 2.将PanGu.dll和词库引入到项目 最新词库地址:http: ...

  10. 简述JS中 appy 和 call 的详细用法

    Apply 和 Call 两个老生常言的方法,使用过程的一些细节还是有很大的异同,具体使用情况可以参照下面例子详细回顾一下. 区别和详解:js中call()和apply()的用法 1.关于call() ...