【iOS开发-网络】关于大文件下载
2015-06-14 12:05
706 查看
大文件下载要使用NSURLConnection的代理方法
**NSFileHandle就像一个游标一样,每次移到文件的尾部,然后写入data
每次收到一个data就写入文件**
在这里要关闭文件操作对象
首先创建好url发出请求
//创建url NSURL *url = [NSURL URLWithString:@"http://localhost:8080/TFServer/resources/videos/minion_01.mp4"]; //创建请求 NSURLRequest *request = [NSURLRequest requestWithURL:url]; //发出一个异步请求 [NSURLConnection connectionWithRequest:request delegate:self];
然后实现代理方法
得到服务器回应 应该在沙盒中的caches中创建一个空的文件-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { //拿到文件夹caches的沙盒路径 NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; //拿到文件的路径 NSString *filepath = [caches stringByAppendingPathComponent:@"minion_01.mp4"]; //拿到文件管理对象 单例 NSFileManager *manage = [NSFileManager defaultManager]; //创造这个文件 [manage createFileAtPath:filepath contents:nil attributes:nil]; //创建一个文件操作对象 self.handler = [NSFileHandle fileHandleForWritingAtPath:filepath]; //文件总长度 self.totalLength = response.expectedContentLength; }
**NSFileHandle就像一个游标一样,每次移到文件的尾部,然后写入data
每次收到一个data就写入文件**
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { //把游标移动到文件尾部 [self.handler seekToEndOfFile]; //开始写入数据 [self.handler writeData:data]; self.fileLength += data.length; }
在这里要关闭文件操作对象
-(void)connectionDidFinishLoading:(NSURLConnection *)connection { //关闭文件操作对象 [self.handler closeFile]; self.handler = nil; }
相关文章推荐
- linux网络编程(unix域流式套接字)
- linux网络编程(组播)
- Android弱网测试中关于网络检测的一些借鉴方法
- linux 网络编程(广播的编程)
- linux网络编程(如何编写一个UDP通信程序)
- windows 8 设置hyper-v网络设置
- 一起学习CC3200系列教程之2个TCP_非阻塞及阻塞设置
- 计算机网络--物理层 的一点总结
- ARM硬件平台上基于UCOS移植Lwip网络协议栈
- ARM硬件平台上基于UCOS移植Lwip网络协议栈
- ARM硬件平台上基于UCOS移植Lwip网络协议栈 分类: 嵌入式开发学习 2015-06-14 10:33 55人阅读 评论(1) 收藏
- unity开发:Qt C++与unity之间TCP网络通信
- 网络传输
- BZOJ 3391: [Usaco2004 Dec]Tree Cutting网络破坏( dfs )
- TCP/IP详解_网际协议IP(二)_IP数据报格式
- TCP 报文
- 关于DNS DHCP FTP TFTP HTTP WEB
- TCP/IP 11种状态变迁
- 使用TCP协议写一个可以上传文件的服务器和客户端
- Linux网络设备驱动-- skb