美文网首页
大文件下载--代理方法方式--NSFileHandle

大文件下载--代理方法方式--NSFileHandle

作者: 陈水寒 | 来源:发表于2016-10-08 16:14 被阅读33次
    • 定义一个属性
    /**  创建一个句柄对象  */
    @property(strong,nonatomic) NSFileHandle *handle;
    
    • 宏定义沙盒文件路径
    #define file [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"xxx.txt"]
    
    • 创建一个网络请求
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        NSURL *url = [[NSURL alloc] initWithString:@"http://xxxx"];
        
        [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:url] delegate:self];
    
    }
    
    • 代理方法
    /**
     *  开始接收收据时调用
     */
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
        // 创建一个空文件
        [[NSFileManager defaultManager] createFileAtPath:file contents:nil attributes:nil];
        // 句柄对象初始化
        self.handle = [NSFileHandle fileHandleForWritingAtPath:file];
    }
    
    /**
     *  一点一点接收数据
     */
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
        // 指定文件写入的位置为文件末尾处
        [self.handle seekToEndOfFile];
        // 写入数据
        [self.handle writeData:data];
        
    }
    
    /**
     *  数据接收完成后调用
     */
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection{
        // 关闭句柄对象
        [self.handle closeFile];
        self.handle = nil;
    }
    

    相关文章

      网友评论

          本文标题:大文件下载--代理方法方式--NSFileHandle

          本文链接:https://www.haomeiwen.com/subject/xamuyttx.html