zoukankan      html  css  js  c++  java
  • IOS下载资源zip到本地然后读取

    思路是

    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"];
    }

  • 相关阅读:
    定义serialVersionUID的作用与意义整理
    HttpClient学习整理
    Eclipse+TestNG搭建接口自动化测试框架
    Jmeter之Bean shell使用(一)
    吴军博士的《数学之美》(摘录)
    SqlServer—大话函数依赖与范式
    MySQL—FOREIGN KEY
    MYSQL-用户操作
    WAMPServer 默认安装启动后,图标显示橙黄色
    Linux time命令
  • 原文地址:https://www.cnblogs.com/Xer-Lee/p/3154687.html
Copyright © 2011-2022 走看看