#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