iOS进阶

CFNetworkDownload_xxxx.tmp

2017-07-28  本文已影响119人  泰克2008

使用 NSURLSession 下载文件,会在完成方法回调里生成location字段,该字段打印出来会发现以 CFNetworkDownload_xxxx.tmp结尾的路径,该文件会在下载完成之后会自动删除temp中的文件,所有我们需要做的是在回调中把文件移动(或者复制,反正之后会自动删除)到Document中。

实例代码:

//1. 下载完成方法
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location{
    NSLog(@"完成 %@",location);
    
    //CFNetworkDownload_xxxx.tmp,不过在下载完成之后会自动删除temp中的文件,所有我们需要做的只是在回调中把文件移动(或者复制,反正之后会自动删除)到document中。
    NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) lastObject];
    //response.suggestedFilename : 建议使用的文件名,一般跟服务器端的文件名一致
    NSString*toPath = [documentPath stringByAppendingPathComponent:downloadTask.response.suggestedFilename];
    // 将临时文件剪切或者复制Caches文件夹
    NSFileManager*fileManager = [NSFileManager defaultManager];
    // AtPath :剪切前的文件路径
    // ToPath :剪切后的文件路径
    [fileManager moveItemAtPath:location.path toPath:toPath error:nil];
    
    //完成任务,
    [self.session finishTasksAndInvalidate];
    //清空Session
    self.session = nil;
}
上一篇下一篇

猜你喜欢

热点阅读