本文转载至 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. DotnetBrowser高级教程-(4)使用MVC框架5-使用视图

    mvc框架理所当然的要支持view了,我们看下前面上传文件的地方,在展示页面时,我们使用了如下的代码: public string UploadImgPage() { return "< ...

  2. Storm sql 简单测试

    准备工作: 1.安装Kafka,启动,以及创建相应的topic 1.启动kafka bin/kafka-server-start.sh config/server.properties > /d ...

  3. Elasticsearch教程(七) elasticsearch Insert 插入数据(Java)

    首先我不赞成再采用一些中间件(jar包)来解决和 Elasticsearch  之间的交互,比如 Spring-data-elasticsearch.jar 系列一样,用就得依赖它.而 Elastic ...

  4. 不是书评 :《我是一只IT小小鸟》

    本文转自刘未鹏 博客,写的非常的好 就转回来了 设计你自己的进度条 进度条的设计是一个很多人都知道的故事:同样的耗时,如果不给任何进度提示,只是在完成之后才弹出一个完成消息,中间没有任何动态变化,那么 ...

  5. 娓娓道来c指针 (2)内存分配

    (2)内存分配 c语言中描写叙述变量的时候经常使用的两个用语 1.作用域:也叫可见域,指的是变量的作用范围. 在哪个范围内.该变量是可见的.能够使用的. 2.生存期:也叫存储期.指的是变量从创建到销毁 ...

  6. ylb:使用sql语句实现添加、删除约束

    ylbtech-SQL Server:SQL Server-使用sql语句实现添加.删除约束 --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. -- ...

  7. UICollectionView的header悬停

    UICollectionView的header悬停,继承UICollectionViewFlowLayout,重写相关方法 // // StickyHeaderLayout.h // Wombat / ...

  8. swift 中的问号跟感叹号

    ?: 变量在使用过程中可能存在空值,则需要用?标记,否则赋空值会报错 ? 1 2 var mustNoNilValue: String = "Swift" var canNilVa ...

  9. Qemu线程池介绍

    有时我们希望把一部分工作通过创建线程的方式异步执行,这样我们可以在执行任务的同时,继续执行其他任务.但是如果这种需求比较多的话,频繁的创建和销毁线程带来很大的性能损耗.如果我们能创建一个或一些线程,然 ...

  10. Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216  java c# php js.docx

    Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216  java c# php js.docx 1.1. 预定义函数 魔术方法 魔术函数是什么1 1.2. & ...