iOS - 大文件下载篇(输出流对象)


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

    

    // 利用NSOutputStreamPath中写入数据(appendYES的话,每次写入都是追加到文件尾部)

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

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值