您的位置:首页 > 移动开发 > IOS开发

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

2016-07-27 11:26 387 查看
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];

    

    // 利用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];

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

    [self.stream
close];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: