iOS - 小文件下载篇(边下载边写入文件)
2016-07-23 14:26
344 查看
先签订 NSURLConnectionDataDelegate
协议
#define MSFileWithPath(path) [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:path]
- (void)viewDidLoad {
[super
viewDidLoad];
NSString *urlString =
@"http://120.25.226.186:32812/resources/videos/minion_15.mp4";
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL
URLWithString:urlString];
[NSURLConnection
connectionWithRequest:[NSURLRequest
requestWithURL:url] delegate:self];
}
#pragma mark - <NSURLConnectionDataDelegate>
// 接收到响应的时候:创建一个空的文件
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSHTTPURLResponse
*)response {
// 获得文件的总长度
self.contentLength = [response.allHeaderFields[@"Content-Length"]
integerValue];
// 创建一个空的文件
[[NSFileManager
defaultManager] createFileAtPath:MSFileWithPath(@"minion_15.mp4")
contents:nil
attributes:nil];
// 创建文件句柄
self.handle = [NSFileHandle fileHandleForWritingAtPath:MSFileWithPath(@"minion_15.mp4")];
}
// 接收到具体数据:马上把数据写入一开始创建好的文件
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
// 指定数据的写入位置 --
文件内容的最后面
[self.handle
seekToEndOfFile];
// 写入数据
[self.handle
writeData:data];
// 拼接总长度
self.currentLength += data.length;
// 进度
self.progressView.progress =
1.0 * self.currentLength /
self.contentLength;
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
// 关闭handle
[self.handle
closeFile];
self.handle =
nil;
// 清空长度
self.currentLength =
0;
}
又是一个小例子, 没事可以看看~
协议
#define MSFileWithPath(path) [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:path]
- (void)viewDidLoad {
[super
viewDidLoad];
NSString *urlString =
@"http://120.25.226.186:32812/resources/videos/minion_15.mp4";
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL
URLWithString:urlString];
[NSURLConnection
connectionWithRequest:[NSURLRequest
requestWithURL:url] delegate:self];
}
#pragma mark - <NSURLConnectionDataDelegate>
// 接收到响应的时候:创建一个空的文件
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSHTTPURLResponse
*)response {
// 获得文件的总长度
self.contentLength = [response.allHeaderFields[@"Content-Length"]
integerValue];
// 创建一个空的文件
[[NSFileManager
defaultManager] createFileAtPath:MSFileWithPath(@"minion_15.mp4")
contents:nil
attributes:nil];
// 创建文件句柄
self.handle = [NSFileHandle fileHandleForWritingAtPath:MSFileWithPath(@"minion_15.mp4")];
}
// 接收到具体数据:马上把数据写入一开始创建好的文件
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
// 指定数据的写入位置 --
文件内容的最后面
[self.handle
seekToEndOfFile];
// 写入数据
[self.handle
writeData:data];
// 拼接总长度
self.currentLength += data.length;
// 进度
self.progressView.progress =
1.0 * self.currentLength /
self.contentLength;
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
// 关闭handle
[self.handle
closeFile];
self.handle =
nil;
// 清空长度
self.currentLength =
0;
}
又是一个小例子, 没事可以看看~
相关文章推荐
- iOS - 小文件下载篇(下载完写入文件)
- IOS动画开发总结
- ios创建空项目
- iostat详解
- ios翻转
- iOS标准时间与时间戳相互转换
- 终极指南:如何为iOS8应用制作预览视频
- iOS 取出一段字符串里面的数字
- iOS开源项目收藏
- iOS角度与弧度转换
- iOS角度与弧度转换
- iOS的屏幕适配之Autoresizing、Autolayout、VFL、Mason 4000 ry
- UVA - 11111 Generalized Matrioshkas
- 【iOS】Jenkins Gitlab持续集成打包平台搭建
- IOS学习之蓝牙4.0
- iOS-环信SDK讲解
- iOS9 新特性 常见关键字
- iOS9 新特性 泛型
- iOS 拾遗 const与宏的区别
- iOS 拾遗 static 和 extern 使用