• 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;
       
    



  • 相关阅读:
    python函数篇
    字符编码和文件处理
    对话代码
    复习2
    [转]借闪光灯的东风 成就你完美的摄影作品
    色系
    Oracle的一些基本操作
    iebook line flash
    网站收录
    复习1
  • 原文地址:https://www.cnblogs.com/xzk-it/p/6576577.html
Copyright © 2020-2023  润新知