iOS 通过NSOutputStream 来下载大文件

#import "ViewController.h"

@interface ViewController ()<NSURLConnectionDataDelegate>

@property (nonatomic, strong) NSOutputStream *stream; // 全局,每次下载的内容能够持续的写入

@end

 @implementation ViewController

 - (void)viewDidLoad {

    [super viewDidLoad];

    [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:@""] delegate:self];

}

#pragma mark-<NSURLConnectionDataDelegate>

 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{// 接收响应

     NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)  lastObject];

    // 沙盒文件的路经 

    NSString *file = [caches stringByAppendingString:response.suggestedFilename];// 和原来下载文件的后缀名保持一致性

   // 让接收的数据不断的写入沙盒文件

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

}

原文地址:https://www.cnblogs.com/1018475062qq/p/7020178.html