iOS - 大文件下载篇(输出流对象)
2016-07-27 11:26
387 查看
1. 首先签订 NSURLConnectionDataDelegate 协议
2. 创建输出流对象: @property (nonatomic,
strong) NSOutputStream *stream;
3. viewDidLoad 方法中发送下载请求 代码如下:
- (void)viewDidLoad {
[super
viewDidLoad];
// 发送 下载请求 并 设置代理
[NSURLConnection
connectionWithRequest:[NSURLRequest
requestWithURL:[NSURL
URLWithString:@"http://120.25.226.186:32812/resources/videos/minion_01.mp4"]]
delegate:self];
}
4. 实现三个代理方法, 代码如下:
#pragma mark - <NSURLConnectionDataDelegate>
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse
*)response
{
/** response.suggestedFilename :
服务器那边的文件名
*/
// 文件路径
NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,
NSUserDomainMask, YES)
lastObject];
NSString *file = [caches
stringByAppendingPathComponent:response.suggestedFilename];
// 利用NSOutputStream往Path中写入数据(append为YES的话,每次写入都是追加到文件尾部)
self.stream = [[NSOutputStream
alloc] initToFileAtPath:file
append:YES];
// 打开流(如果文件不存在,会自动创建)
[self.stream
open];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[self.stream
write:[data bytes]
maxLength:data.length];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[self.stream
close];
}
2. 创建输出流对象: @property (nonatomic,
strong) NSOutputStream *stream;
3. viewDidLoad 方法中发送下载请求 代码如下:
- (void)viewDidLoad {
[super
viewDidLoad];
// 发送 下载请求 并 设置代理
[NSURLConnection
connectionWithRequest:[NSURLRequest
requestWithURL:[NSURL
URLWithString:@"http://120.25.226.186:32812/resources/videos/minion_01.mp4"]]
delegate:self];
}
4. 实现三个代理方法, 代码如下:
#pragma mark - <NSURLConnectionDataDelegate>
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse
*)response
{
/** response.suggestedFilename :
服务器那边的文件名
*/
// 文件路径
NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,
NSUserDomainMask, YES)
lastObject];
NSString *file = [caches
stringByAppendingPathComponent:response.suggestedFilename];
// 利用NSOutputStream往Path中写入数据(append为YES的话,每次写入都是追加到文件尾部)
self.stream = [[NSOutputStream
alloc] initToFileAtPath:file
append:YES];
// 打开流(如果文件不存在,会自动创建)
[self.stream
open];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[self.stream
write:[data bytes]
maxLength:data.length];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[self.stream
close];
}
相关文章推荐
- iOS绘图教程
- iOS- 点赞动画效果
- CocoaPods pod install/pod update更新慢的问题
- iOS 通过NSURLSession只获取响应头
- 浅解:iOS应用程序中的性能优化
- iOS新特性实现3DTouch开发
- iOS中nil 、NULL、 Nil 、NULL的区别
- IOS 开发过程中问题汇总
- nagios系列(六)之nagios实现对服务器cpu温度的监控
- nagios系列(六)之nagios实现对服务器cpu温度的监控
- iOS 图片拉伸处理
- 弹出键盘 tableview定位到编辑位置
- IOS 多线程,线程同步的三种方式
- iOS(CoreGraphics)画带箭头的框
- ios多线程开发的常用三种方式
- iOS判断输入的字符是否都是中文
- iOSpush到下一个页面,去掉tabBar占用页面的大小
- iOS 计算两个坐标之间的距离
- [iOS] 绘制虚线CGContextSetLineDash的使用
- iOS 开发自定义一个提示框