#import "URL.h"
@interface URL ()
//文件输出流
@property(nonatomic,strong) NSOutputStream * fileStream;
//下载线程的运行循环
@property(nonatomic,assign) CFRunLoopRef downloadRunloop;
@end
@implementation URL
- (void)viewDidLoad {
[super viewDidLoad];
[self outputStream];
}
//输出流
-(void)outputStream{
dispatch_async(dispatch_get_global_queue(0, 0), ^{
//创建统一资源定位符
NSURL *url = [NSURL URLWithString:@"http://localhost/001--NSURLConnection.wmv.pbb"];
//创建网络请求
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:YES];
//CFRunLoopStop(r) 停止指定的RunLoop
//CFRunLoopGetCurrent() 拿到当前的RunLoop
//CFRunLoopRun() 直接启动当前的RunLoop运行循环
self.downloadRunloop = CFRunLoopGetCurrent();
CFRunLoopRun();
});
}
//接收头信息
- (void)connection:(NSURLConnection )connection didReceiveResponse:(NSURLResponse )response{
NSString *path = [@"/Users/xiaojie/Desktop/xiaoxiao" stringByAppendingPathComponent:response.suggestedFilename];
[[NSFileManager defaultManager]removeItemAtPath:path error:NULL];
self.fileStream = [[NSOutputStream alloc]initToFileAtPath:path append:YES];
[self.fileStream open];
}
//不断接收数据
- (void)connection:(NSURLConnection )connection didReceiveData:(NSData )data{
[self.fileStream write:data.bytes maxLength:data.length];
}
//数据传输完毕
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
[self.fileStream close];
//停止RunLoop
CFRunLoopStop(self.downloadRunloop);
}
@end