詳解iPhone應(yīng)用開發(fā)中緩存文件
iPhone應(yīng)用開發(fā)中緩存文件是本文要介紹的內(nèi)容,在iPhone應(yīng)用程序中,我們經(jīng)常要用去網(wǎng)絡(luò)下載一些文件,比如xml,圖片等等!但是往往我們經(jīng)常是需要反復(fù)讀取這部分?jǐn)?shù)據(jù),或者我們要寫一些文件在沙箱中,供下次打開程序的時候使用,這時候我們就需要用到緩存文件(讀寫文件),今天和大家分享一個Demo,用來緩存從網(wǎng)上下載下來的圖片和xml;
項目背景:
下載從網(wǎng)絡(luò)下載圖片,并寫在temp目錄下,temp目錄下的文件在程序退出時會被清空,所以用來寫本次要用的緩存內(nèi)容很合適(我這么覺得)。
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、將數(shù)據(jù)寫入改路徑
- [data writeToFile:[self GetTempPath:@"test.png"] atomically:NO];
這里用到NSData的writeToFile方法,可以在API中找到更詳細的解釋
第一個參數(shù):將數(shù)據(jù)寫入的路徑
第二個參數(shù):是否覆蓋原有文件YES為覆蓋 NO則相反
方法返回一個BOOL類型的值,YES表示寫入成功
4、判斷路徑下的文件是否已經(jīng)存在
- -(BOOL)isExistsFile:(NSString *)filepath{
- NSFileManager *filemanage = [NSFileManager defaultManager];
- return [filemanage fileExistsAtPath:filepath];
- }
- BOOL exist = [self isExistsFile:[self GetTempPath:@"test.png"]];
exist=YES表示文件已經(jīng)存在
NO表示不存在
到這里,同類的問題都可以解決了吧。當(dāng)然不僅僅是可以將圖片保存到temp目錄,其他的文件也行。當(dāng)然也可以保存在document目錄,這樣我們可以長時間持有它。稍后將和大家分享document目錄下的保存讀取操作!
小結(jié):詳解iPhone應(yīng)用開發(fā)中緩存文件的內(nèi)容介紹完了,希望本文對你有所幫助!