zoukankan      html  css  js  c++  java
  • NSURLsession利用输出流断点续传

    输出流:NSOutputStream
    作用:用于与下载

    //outputStreamToFileAtPath: append:; 方法会根据路径创建文件,append是否追加任务  
     NSOutputStream *stream = [NSOutputStream outputStreamToFileAtPath:path append:YES];
        //打开输出流
        [self.stream open];
    

    注意点:如果path下有文件,输出流会在该文件下追加任务,如果该路径下没有文件,open方法会创建文件,输出流再次文件下追加任务

    断点下载核心代码
    用于解决重新开始下载,会把文件重新下载一遍,而非下载还未下载的数据,造成的后果就是下载文件的数据越来越大

     //设置请求头信息
        NSString *range = [NSString stringWithFormat:@"bytes=%zd-",currentSize];
        
        [request setValue:range forHTTPHeaderField:@"Range"];
    

    如何得到已经下载的文件大小

     //0.得到已经下载的文件数据的大小
        /*
         第一个参数:文件的路径
         */
        //获取要下载数据到哪个文件的路径
        self.path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:KFileName];
        NSLog(@"%@",self.path);
    
        //获取已下载的数据大小
       NSDictionary *file = [[NSFileManager defaultManager] attributesOfItemAtPath:self.path error:nil];
        NSLog(@"%@",file);
        NSInteger currentData = [file[@"NSFileSize"] integerValue];
        self.currentData = currentData;
    
    

    注意点:如果要显示进度信息,预计下载的大小是此次要下载数据的大小,所以要加上之前已经下载的数据大小,才是文件的总大小

    //在代理方法-didReceiveResponse中
     //获取数据总大小
        self.totalData = response.expectedContentLength + self.currentData;
       
    



  • 相关阅读:
    hdu 1002 A + B Problem II
    hdu 1001 Sum Problem
    hdu 1000 A + B Problem
    mysql允许其他电脑访问权限开通
    zend studio安装svn插件
    phpcms采集地址中为相对路径解决方法
    如何解决phpcms后台验证码不显示的问题
    phpcms常用方法简介
    网站标签栏ico设置代码
    phpcms get标签用法
  • 原文地址:https://www.cnblogs.com/xzk-it/p/6576577.html
Copyright © 2011-2022 走看看