您的位置:首页 > 移动开发 > IOS开发

IOS把图片缓存到本地的几种方法

2017-02-16 13:17 435 查看
思路是

1.ios下载服务器上的zip资源包(图片,声音等经过zip压缩的资源包)到本地

2.解压zip到程序目录

3.从程序目录加载资源文件

 

一、下载zip资源

[cpp]

-(NSString*)DownloadTextFile:(NSString*)fileUrl   fileName:(NSString*)_fileName 



    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask,YES);//使用C函数NSSearchPathForDirectoriesInDomains来获得沙盒中目录的全路径。  

    NSString *ourDocumentPath =[documentPaths objectAtIndex:0]; 

    NSString *sandboxPath = NSHomeDirectory(); 

    NSString *documentPath = [sandboxPath  stringByAppendingPathComponent:@"TestDownImgZip.app"];//将Documents添加到sandbox路径上//TestDownImgZip.app  

    NSString *FileName=[documentPath stringByAppendingPathComponent:_fileName];//fileName就是保存文件的文件名  

    NSFileManager *fileManager = [NSFileManager defaultManager]; 

    // Copy the database sql file from the resourcepath to the documentpath  

    if ([fileManager fileExistsAtPath:FileName]) 

    { 

        return FileName; 

    }else 

    { 

        NSURL *url = [NSURL URLWithString:fileUrl]; 

        NSData *data = [NSData dataWithContentsOfURL:url]; 

        [data writeToFile:FileName atomically:YES];//将NSData类型对象data写入文件,文件名为FileName  

    } 

    return FileName; 



-(NSString*)DownloadTextFile:(NSString*)fileUrl   fileName:(NSString*)_fileName

{

    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask,YES);//使用C函数NSSearchPathForDirectoriesInDomains来获得沙盒中目录的全路径。

    NSString *ourDocumentPath =[documentPaths objectAtIndex:0];

    NSString *sandboxPath = NSHomeDirectory();

    NSString *documentPath = [sandboxPath  stringByAppendingPathComponent:@"TestDownImgZip.app"];//将Documents添加到sandbox路径上//TestDownImgZip.app

    NSString *FileName=[documentPath stringByAppendingPathComponent:_fileName];//fileName就是保存文件的文件名

    NSFileManager *fileManager = [NSFileManager defaultManager];

    // Copy the database sql file from the resourcepath to the documentpath

    if ([fileManager fileExistsAtPath:FileName])

    {

        return FileName;

    }else

    {

        NSURL *url = [NSURL URLWithString:fileUrl];

        NSData *data = [NSData dataWithContentsOfURL:url];

        [data writeToFile:FileName atomically:YES];//将NSData类型对象data写入文件,文件名为FileName

    }

    return FileName;

}

 

 

 

2.解压zip包

[cpp]

- (void)OpenZip:(NSString*)zipPath  unzipto:(NSString*)_unzipto 



    ZipArchive* zip = [[ZipArchive alloc] init]; 

    if( [zip UnzipOpenFile:zipPath] ) 

    { 

        BOOL ret = [zip UnzipFileTo:_unzipto overWrite:YES]; 

        if( NO==ret ) 

        { 

            NSLog(@"error"); 

        } 

        [zip UnzipCloseFile]; 

    } 

    [zip release]; 

     



- (void)OpenZip:(NSString*)zipPath  unzipto:(NSString*)_unzipto

{

    ZipArchive* zip = [[ZipArchive alloc] init];

    if( [zip UnzipOpenFile:zipPath] )

    {

        BOOL ret = [zip UnzipFileTo:_unzipto overWrite:YES];

        if( NO==ret )

        {

            NSLog(@"error");

        }

        [zip UnzipCloseFile];

    }

    [zip release];

   

}

 

3.调去函数

[cpp]

- (IBAction)ShowImg:(id)sender { 

    NSString *filePath = [self DownloadTextFile:@"http://www.xtox.net/img.zip" fileName:@"img.zip"]; 

    NSLog(filePath); 

     

    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask,YES);//使用C函数NSSearchPathForDirectoriesInDomains来获得沙盒中目录的全路径。  

    NSString *ourDocumentPath =[documentPaths objectAtIndex:0]; 

    NSString *sandboxPath = NSHomeDirectory(); 

    NSString *documentPath = [sandboxPath  stringByAppendingPathComponent:@"TestDownImgZip.app"];//将Documents添加到sandbox路径上//TestDownImgZip.app  

 

    [self OpenZip:filePath unzipto:documentPath]; 

    self.imgView.image = [UIImage imageNamed:@"img/1.png"]; 



- (IBAction)ShowImg:(id)sender {

    NSString *filePath = [self DownloadTextFile:@"http://www.xtox.net/img.zip" fileName:@"img.zip"];

    NSLog(filePath);

   

    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask,YES);//使用C函数NSSearchPathForDirectoriesInDomains来获得沙盒中目录的全路径。

    NSString *ourDocumentPath =[documentPaths objectAtIndex:0];

    NSString *sandboxPath = NSHomeDirectory();

    NSString *documentPath = [sandboxPath  stringByAppendingPathComponent:@"TestDownImgZip.app"];//将Documents添加到sandbox路径上//TestDownImgZip.app

    [self OpenZip:filePath unzipto:documentPath];

    self.imgView.image = [UIImage imageNamed:@"img/1.png"];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: