来自:http://blog.csdn.net/iphone13/article/details/9675071


  1. //  

  2. //  ViewController.m  

  3. //  AFN断点续传演练  

  4. //  

  5. //  Created by apple on 13-7-30.  

  6. //  Copyright (c) 2013年 Jackie. All rights reserved.  

  7. //  

  8. #import "ViewController.h"  

  9. #import "AFNetworking.h"  

  10. #import "SSZipArchive.h"  

  11. @interface ViewController ()  

  12. @end  

  13. @implementation ViewController  

  14. - (void)viewDidLoad  

  15. {  

  16.    [super viewDidLoad];  

  17.    // Do any additional setup after loading the view, typically from a nib.  

  18. }  

  19. - (void)didReceiveMemoryWarning  

  20. {  

  21.    [super didReceiveMemoryWarning];  

  22.    // Dispose of any resources that can be recreated.  

  23. }  

  24. #pragma mark - 下载文件  

  25. - (IBAction)downloadFiles:(id)sender  

  26. {  

  27.    // 1.   指定下载文件地址  

  28.    NSURL *url = [NSURL URLWithString:@"http://169.254.98.245/~apple/itcast/download/iTunesConnect_DeveloperGuide_CN.zip"];  

  29.    // 2.   指定文件保存路径  

  30.    NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  

  31.    NSString *downloadPath = [documents[0]stringByAppendingPathComponent:@"book.zip"];  

  32.    // 3.   创建NSURLRequest  

  33.    NSURLRequest *request = [NSURLRequest requestWithURL:url];  

  34.    // 4.   创建AFURLConnectionOperation  

  35.    AFURLConnectionOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];  

  36.    // 5.   设置操作的输出流(在网络中的数据是以流的方式传输的,告诉操作把文件保存在第2步设置的路径中)  

  37.    [operation setOutputStream:[NSOutputStream outputStreamToFileAtPath:downloadPath append:NO]];  

  38.    // 6.   设置下载进程处理块代码  

  39.    // 6.1 bytesRead 读取的字节——这一次下载的字节数  

  40.    // 6.2 totalBytesRead 读取的总字节——已经下载完的  

  41.    // 6.3 totalBytesExpectedToRead 希望读取的总字节——就是文件的总大小  

  42.    [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {  

  43.        // 做下载进度百分比的工作  

  44.        NSLog(@"下载百分比:%f", (float)totalBytesRead / totalBytesExpectedToRead);  

  45.    }];  

  46.    // 7.   操作完成块代码  

  47.    [operation setCompletionBlock:^{  

  48.        // 解压缩的顺序  

  49.        // 1. 定义要解压缩的文件 —— downloadPath  

  50.        // 2. 要解压缩的目标目录  

  51.        // 3. 调用类方法解压缩  

  52.        [SSZipArchive unzipFileAtPath:downloadPath toDestination:documents[0]];  

  53.        // 删除压缩包  

  54.        [[NSFileManager defaultManager]removeItemAtPath:downloadPath error:nil];  

  55.    }];  

  56.    // 8   启动操作  

  57.    [operation start];  

  58. }  

  59. @end