首页 > 代码库 > 大文件的下载
大文件的下载
(1)实现思路
边接收数据边写文件以解决内存越来越大的问题
(2)核心代码
//当接收到服务器响应的时候调用,该方法只会调用一次-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ //0.获得当前要下载文件的总大小(通过响应头得到) NSHTTPURLResponse *res = (NSHTTPURLResponse *)response; self.totalLength = res.expectedContentLength; NSLog(@"%zd",self.totalLength); //创建一个新的文件,用来当接收到服务器返回数据的时候往该文件中写入数据 //1.获取文件管理者 NSFileManager *manager = [NSFileManager defaultManager]; //2.拼接文件的全路径 //caches文件夹路径 NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; NSString *fullPath = [caches stringByAppendingPathComponent:res.suggestedFilename]; self.fullPath = fullPath; //3.创建一个空的文件 [manager createFileAtPath:fullPath contents:nil attributes:nil];}//当接收到服务器返回的数据时会调用//该方法可能会被调用多次-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ //1.创建一个用来向文件中写数据的文件句柄 //注意当下载完成之后,该文件句柄需要关闭,调用closeFile方法 NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:self.fullPath]; //2.设置写数据的位置(追加) [handle seekToEndOfFile]; //3.写数据 [handle writeData:data]; //4.计算当前文件的下载进度 self.currentLength += data.length; NSLog(@"%f",1.0* self.currentLength/self.totalLength); self.progressView.progress = 1.0* self.currentLength/self.totalLength;}
大文件的下载
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。