首页 > 代码库 > 源码0603-01-了解-大文件下载(NSOutputStream)
源码0603-01-了解-大文件下载(NSOutputStream)
NSOutputStream 数据流的使用
// ViewController.m// 01-了解-大文件下载(NSOutputStream)#import "ViewController.h"@interface ViewController () <NSURLConnectionDataDelegate>/** 输出流对象 */@property (nonatomic, strong) NSOutputStream *stream;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://120.25.226.186:32812/resources/videos/minion_01.mp4"]] delegate:self];}#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]; NSLog(@"%@", file); // 利用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]; NSLog(@"didReceiveData-------");}- (void)connectionDidFinishLoading:(NSURLConnection *)connection{ [self.stream close]; NSLog(@"-------");}@end
// ViewController.m// 03-NSURLConnection与RunLoop#import "ViewController.h"@interface ViewController () <NSURLConnectionDataDelegate>/** runLoop */@property (nonatomic, assign) CFRunLoopRef runLoop;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSURLConnection *conn = [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://120.25.226.186:32812/resources/images/minion_01.png"]] delegate:self]; // 决定代理方法在哪个队列中执行 [conn setDelegateQueue:[[NSOperationQueue alloc] init]]; // 启动子线程的runLoop// [[NSRunLoop currentRunLoop] run]; self.runLoop = CFRunLoopGetCurrent(); // 启动runLoop CFRunLoopRun(); });}#pragma mark - <NSURLConnectionDataDelegate>- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ NSLog(@"didReceiveResponse----%@", [NSThread currentThread]);}- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ NSLog(@"didReceiveData----%@", [NSThread currentThread]);}- (void)connectionDidFinishLoading:(NSURLConnection *)connection{ NSLog(@"connectionDidFinishLoading----%@", [NSThread currentThread]); // 停止RunLoop CFRunLoopStop(self.runLoop);}@end
源码0603-01-了解-大文件下载(NSOutputStream)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。