NSURLSessionDownloadTask大文件斷點(diǎn)下載

NSURLSessionDownloadDelegate

#import "ViewController.h"


@interface ViewController () <NSURLSessionDownloadDelegate>
/** 下載任務(wù) */
@property (nonatomic, strong) NSURLSessionDownloadTask *task;
@end


@implementation ViewController
/**
 * 開始下載
 */
- (IBAction)start:(id)sender {
    NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]
                                                          delegate:self
                                                     delegateQueue:[[NSOperationQueue alloc] init]];
    NSString *urlString = @"http://www.example.com:8080/resources/videos/minion_01.mp4";
    NSURL *url = [NSURL URLWithString:urlString];
    self.task = [session downloadTaskWithURL:url];
    [self.task resume];
}

/**
 * 暫停下載
 */
- (IBAction)pause:(id)sender {
    [self.task suspend];
}

/**
 * 繼續(xù)下載
 */
- (IBAction)goOn:(id)sender {
    [self.task resume];
}

#pragma mark - <NSURLSessionDownloadDelegate>

/**
 * 每當(dāng)寫入數(shù)據(jù)到臨時文件時,就會調(diào)用一次這個方法
 * totalBytesExpectedToWrite:總大小
 * totalBytesWritten: 已經(jīng)寫入的大小
 * bytesWritten: 這次寫入多少
 */
- (void)URLSession:(NSURLSession *)session
      downloadTask:(NSURLSessionDownloadTask *)downloadTask
      didWriteData:(int64_t)bytesWritten
 totalBytesWritten:(int64_t)totalBytesWritten
totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{
    NSLog(@"%s",__func__);
    NSLog(@"%f", 1.0 * totalBytesWritten / totalBytesExpectedToWrite);
}

- (void)URLSession:(NSURLSession *)session
      downloadTask:(NSURLSessionDownloadTask *)downloadTask
 didResumeAtOffset:(int64_t)fileOffset
expectedTotalBytes:(int64_t)expectedTotalBytes{
    NSLog(@"%s",__func__);
}

/**
 * 下載完畢就會調(diào)用一次這個方法
 */
- (void)URLSession:(NSURLSession *)session
      downloadTask:(NSURLSessionDownloadTask *)downloadTask
didFinishDownloadingToURL:(NSURL *)location{
    // 文件將來存放的真實(shí)路徑
    NSString *file = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:downloadTask.response.suggestedFilename];
    NSLog(@"%@",file);
    
    // 剪切l(wèi)ocation的臨時文件到真實(shí)路徑
    NSFileManager *mgr = [NSFileManager defaultManager];
    [mgr moveItemAtURL:location toURL:[NSURL fileURLWithPath:file] error:nil];
}


- (void)URLSession:(NSURLSession *)session
              task:(NSURLSessionDownloadTask *)task
didCompleteWithError:(NSError *)error{
    NSLog(@"%s",__func__);
}
@end

// 0.996829
// -[ViewController URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]
// 0.999656
// -[ViewController URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]
// 1.000000
// /Users/zhaoyingxin/Library/Developer/CoreSimulator/Devices/1146129D-06F4-457B-83AC-B97F3B7ECA32/data/Containers/Data/Application/265D1E5E-A086-4338-8538-104F6D48663D/Library/Caches/minion_01.mp4
// -[ViewController URLSession:task:didCompleteWithError:]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末雕蔽,一起剝皮案震驚了整個濱河市蔫巩,隨后出現(xiàn)的幾起案子槽奕,更是在濱河造成了極大的恐慌例朱,老刑警劉巖产捞,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件超埋,死亡現(xiàn)場離奇詭異欧穴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)糊余,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門秀又,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贬芥,你說我怎么就攤上這事吐辙。” “怎么了蘸劈?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵昏苏,是天一觀的道長。 經(jīng)常有香客問我威沫,道長贤惯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任壹甥,我火速辦了婚禮救巷,結(jié)果婚禮上壶熏,老公的妹妹穿的比我還像新娘句柠。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布溯职。 她就那樣靜靜地躺著精盅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谜酒。 梳的紋絲不亂的頭發(fā)上叹俏,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機(jī)與錄音僻族,去河邊找鬼粘驰。 笑死,一個胖子當(dāng)著我的面吹牛述么,可吹牛的內(nèi)容都是我干的蝌数。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼度秘,長吁一口氣:“原來是場噩夢啊……” “哼顶伞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起剑梳,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤唆貌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后垢乙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锨咙,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年追逮,在試婚紗的時候發(fā)現(xiàn)自己被綠了蓖租。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡羊壹,死狀恐怖蓖宦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情油猫,我是刑警寧澤稠茂,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站情妖,受9級特大地震影響睬关,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜毡证,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一电爹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧料睛,春花似錦丐箩、人聲如沸摇邦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽施籍。三九已至,卻和暖如春概漱,著一層夾襖步出監(jiān)牢的瞬間丑慎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工瓤摧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竿裂,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓照弥,卻偏偏與公主長得像铛绰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子产喉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容