越简单越好!

详解iPhone应用开发中缓存文件

发表于 2012-02-10 14:23 | 1532次阅读 0次点赞   IOS开发

iPhone应用开发中缓存文件是本文要介绍的内容,在iPhone应用程序中,我们经常要用去网络下载一些文件,比如xml,图片等等!但是往往我们经常是需要反复读取这部分数据,或者我们要写一些文件在沙箱中,供下次打开程序的时候使用,这时候我们就需要用到缓存文件(读写文件),用来缓存从网上下载下来的图片和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表示不存在

更强大的图片缓存等功能可以用SDWebImage
官方地址:https://github.com/rs/SDWebImage



返回顶部 ^