zoukankan      html  css  js  c++  java
  • iOS25 大文件下载 文件输出流

    大文件下载
    
    使用NSURLConnection代理方式实现
    // 接收到响应的时候:创建一个空的文件
    
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSHTTPURLResponse *)response
    {   
     // 获取文件长度
        self.movieCount = [response.allHeaderFields[@"Content-Length"] integerValue];  
       // 创建一个空文件
        [[NSFileManager defaultManager] createFileAtPath:SLQFilePath contents:nil attributes:nil];    
       // 创建文件句柄
        self.handle = [NSFileHandle fileHandleForWritingAtPath:SLQFilePath];
     }
    // 接收到具体数据:马上把数据写入一开始创建好的文件
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {  
      // 移动到文件末尾
        [self.handle seekToEndOfFile];   
     // 写入数据
        [self.handle writeData:data]; 
        self.currentCount += data.length;    
     CGFloat progress = 1.0 * self.currentCount / self.movieCount;   
      self.progressView.progress = progress;   
       NSLog(@"%f",progress * 100 );
    }
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    {    self.movieCount = 0;   
        // 关闭文件
        [self.handle closeFile];  
          self.handle = nil;}
    NSOutputStream
    
    文件流,文件输出流,可以输出到内存、硬盘、NSData
    - (void)viewDidLoad {
        [super viewDidLoad];   
     // 建立连接
        NSURL *url  = [NSURL URLWithString:@"http://123.123.123.123/resources/videos/minion_02.mp4"];
        [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:url] delegate:self];
    }
     /**
     * 接收到响应的时候:创建一个空的文件
     */
     - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSHTTPURLResponse *)response
    {    
     // 获取服务器那里给出的建议名字   response.suggestedFilename);
        NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:response.suggestedFilename];   
      // 创建文件流
        self.stream = [[NSOutputStream alloc] initToFileAtPath:path append:YES];   
       // 打开文件流
        [self.stream open];
    }
       /**
     * 接收到具体数据:马上把数据写入一开始创建好的文件
     */
       - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {    
       // 参数1要求是bytes
        [self.stream write:[data bytes]  maxLength:data.length];   
        NSLog(@"---");
    }
    
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    {   
         // 关闭文件流
        [self.stream close];
    }
  • 相关阅读:
    个人应该做什么样的网站?
    得对xls文件作操作
    正则替换
    31 反馈的判断方法(2)
    AD 层次原理图设计 自上而下
    27 多级放大电路的频率响应与第四章集成运放的电流源电路
    P28 集成运放的电流源电路(2)
    32 负反馈放大电路的方块图
    ESP8266固件AT指令连接EMQ 的MQTT服务器
    33 深度负反馈的实质与放大倍数分析
  • 原文地址:https://www.cnblogs.com/ytmaylover/p/5065867.html
Copyright © 2011-2022 走看看