使用 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;
}