文件下載方法及裝置的制造方法
【專利摘要】本發(fā)明實施例提供了一種文件下載方法及裝置。其中,文件下載方法包括:為待下載文件創(chuàng)建目標(biāo)文件,將所述待下載文件劃分為數(shù)據(jù)段并分配給多個線程負(fù)責(zé)下載,每個數(shù)據(jù)段具有一個起始位置信息;所述多個線程打開所述目標(biāo)文件,將文件指針設(shè)置在與負(fù)責(zé)下載的數(shù)據(jù)段的起始位置信息相應(yīng)的寫位置;所述多個線程下載所述數(shù)據(jù)段,自所述寫位置起將下載的數(shù)據(jù)段寫入所述目標(biāo)文件。本發(fā)明實施例的文件下載方法及裝置,能夠通過多個線程對文件進(jìn)行下載并寫入目標(biāo)文件,使下載更加順暢,提升用戶下載體驗。
【專利說明】
文件下載方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種文件下載方法及裝置。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)行業(yè)的日益進(jìn)步,用戶可通過互聯(lián)網(wǎng)下載豐富的資源。例如,越來越多的用戶通過寬帶將網(wǎng)絡(luò)視頻文件下載到本地,然后拷貝到手機(jī)、PAD等移動設(shè)備上進(jìn)行觀看。由于此種用戶需求的不斷增加,下載技術(shù)也不斷發(fā)展,大致分為單線程和多線程兩種方式。為了提升下載速度,通常采用多線程下載。具體來說,就是先將文件劃分為多個文件分片,然后通過多線程將文件分片下載到本地,在完成所有分片的下載操作后將多個文件分片合并為原始文件。
[0003]然而,上述技術(shù)具有以下不足之處:文件合并的過程會占用大量磁盤輸入/輸出,磁盤讀寫速度慢,甚至還會出現(xiàn)操作系統(tǒng)處于假死狀態(tài),導(dǎo)致下載速度慢,用戶體驗較差。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于,提供一種文件下載方法及裝置,以實現(xiàn)快速、順暢地通過多個線程對文件進(jìn)行下載并直接寫入目標(biāo)文件,提升用戶下載體驗。
[0005]根據(jù)本發(fā)明的一方面,提供一種文件下載方法,包括:為待下載文件創(chuàng)建目標(biāo)文件,將所述待下載文件劃分為數(shù)據(jù)段并分配給多個線程負(fù)責(zé)下載,每個數(shù)據(jù)段具有一個起始位置信息;所述多個線程打開所述目標(biāo)文件,將文件指針設(shè)置在與負(fù)責(zé)下載的數(shù)據(jù)段的起始位置信息相應(yīng)的寫位置;所述多個線程下載所述數(shù)據(jù)段,自所述寫位置起將下載的數(shù)據(jù)段寫入所述目標(biāo)文件。
[0006]優(yōu)選地,所述方法還包括:判斷存儲所述目標(biāo)文件的存儲設(shè)備是否為可移動設(shè)備;當(dāng)存儲所述目標(biāo)文件的存儲設(shè)備是可移動設(shè)備時,為所述目標(biāo)文件添加非緩沖讀寫標(biāo)記;當(dāng)存儲所述目標(biāo)文件的存儲設(shè)備是非可移動設(shè)備時,為所述目標(biāo)文件添加緩沖讀寫標(biāo)記。
[0007]優(yōu)選地,所述為待下載文件創(chuàng)建目標(biāo)文件的處理還包括:將創(chuàng)建的目標(biāo)文件的大小設(shè)置為與所述待下載文件的大小相同。
[0008]優(yōu)選地,所述打開所述目標(biāo)文件的處理還包括:以共享讀寫方式打開所述目標(biāo)文件。
[0009]根據(jù)本發(fā)明的另一方面,還提供一種文件下載裝置,包括:文件分配模塊,用于為待下載文件創(chuàng)建目標(biāo)文件,將所述待下載文件劃分為數(shù)據(jù)段并分配給多個線程負(fù)責(zé)下載,每個數(shù)據(jù)段具有一個起始位置信息;指針設(shè)置模塊,用于所述多個線程打開所述目標(biāo)文件,將文件指針設(shè)置在與負(fù)責(zé)下載的數(shù)據(jù)段的起始位置信息相應(yīng)的寫位置;文件下載模塊,用于所述多個線程下載所述數(shù)據(jù)段,自所述寫位置起將下載的數(shù)據(jù)段寫入所述目標(biāo)文件。
[0010]優(yōu)選地,所述裝置還包括:設(shè)備類型判斷模塊,用于判斷存儲所述目標(biāo)文件的存儲設(shè)備是否為可移動設(shè)備;文件標(biāo)記模塊,用于當(dāng)存儲所述目標(biāo)文件的存儲設(shè)備是可移動設(shè)備時,為所述目標(biāo)文件添加非緩沖讀寫標(biāo)記;當(dāng)存儲所述目標(biāo)文件的存儲設(shè)備是非可移動設(shè)備時,為所述目標(biāo)文件添加緩沖讀寫標(biāo)記。
[0011]優(yōu)選地,所述文件創(chuàng)建模塊還用于將創(chuàng)建的目標(biāo)文件的大小設(shè)置為與所述待下載文件的大小相同。
[0012]優(yōu)選地,所述文件下載模塊還用于以共享讀寫方式打開所述目標(biāo)文件。
[0013]本發(fā)明實施例提供的文件下載方法及裝置,基于多個線程各自負(fù)責(zé)下載待下載文件的相應(yīng)的數(shù)據(jù)段,并寫入為待下載文件創(chuàng)建的目標(biāo)文件中。與現(xiàn)有技術(shù)相比,由于省去了文件合并的過程,使得下載過程更加快速、順暢,提升了用戶下載體驗。此外,通過區(qū)分存儲設(shè)備是否具有可移動特性,降低了移除可移動設(shè)備時造成文件損壞的幾率。
【附圖說明】
[0014]圖1是示出反映本發(fā)明的總體發(fā)明構(gòu)思的一個示例的示意圖;
[0015]圖2是示出根據(jù)本發(fā)明實施例一的文件下載方法的流程圖;
[0016]圖3是示出根據(jù)本發(fā)明實施例二的文件下載裝置的邏輯框圖。
【具體實施方式】
[0017]本發(fā)明的基本構(gòu)思是,提供一種基于多線程進(jìn)行文件下載并將下載的數(shù)據(jù)直接寫入目標(biāo)文件的技術(shù)方法,從而使得下載速度更快、更順暢,提高用戶的下載體驗。
[0018]圖1是示出反映本發(fā)明的總體發(fā)明構(gòu)思的一個示例的示意圖。
[0019]參照圖1,首先,步驟110:創(chuàng)建目標(biāo)文件,可通過調(diào)用視窗操作系統(tǒng)應(yīng)用程序接口(Windows API,WinAPI)設(shè)置文件有效長度,通過該調(diào)用可以節(jié)省操作系統(tǒng)填充目標(biāo)文件的時間;其次,多個線程均以共享讀寫方式打開目標(biāo)文件,同時,步驟120:判斷存儲設(shè)備是否可移動,步驟130:若存儲設(shè)備是非可移動設(shè)備,則為目標(biāo)文件添加緩沖讀寫、隨機(jī)讀寫標(biāo)記,步驟140:若存儲設(shè)備是可移動設(shè)備,則添加非緩沖讀寫、隨機(jī)讀寫標(biāo)記;最后,步驟150:線程移動文件指針到本線程負(fù)責(zé)下載的數(shù)據(jù)分片的起始位置相應(yīng)的寫入位置,步驟160:開始下載并使用對應(yīng)句柄寫入目標(biāo)文件。
[0020]由此可見,在文件下載過程中,無需文件合并過程,避免了因文件合并處理導(dǎo)致占用大量磁盤輸入/輸出,磁盤讀寫速度慢。因此,根據(jù)本發(fā)明的基本構(gòu)思,可提高下載速度以及下載的流暢性,提升用戶下載體驗。此外,通過區(qū)分存儲設(shè)備是否具有可移動特性,可降低移除可移動設(shè)備時造成文件損壞的幾率。
[0021]下面結(jié)合附圖詳細(xì)描述本發(fā)明實施例的文件下載方法及裝置。
[0022]實施例一
[0023]圖2是示出根據(jù)本發(fā)明實施例一的文件下載方法的流程圖??稍谌鐖D3所示實施例的裝置上執(zhí)行所述方法。
[0024]參照圖2,在步驟S210,為待下載文件創(chuàng)建目標(biāo)文件,將待下載文件劃分為數(shù)據(jù)段并分配給多個線程負(fù)責(zé)下載,每個數(shù)據(jù)段具有一個起始位置信息。
[0025]根據(jù)本發(fā)明的示例性實施例,步驟S210中為待下載文件創(chuàng)建目標(biāo)文件的處理還包括:將創(chuàng)建的目標(biāo)文件的大小設(shè)置為與待下載文件的大小相同。
[0026]在具體的實現(xiàn)方式中,例如,當(dāng)用戶點擊視頻播放界面內(nèi)的觀看按鍵時,指示用戶終端下載該多媒體文件,則該多媒體文件即為待下載文件,該待下載文件的地址可以為多媒體文件對應(yīng)統(tǒng)一資源定位符的(Universal Resource Locator,URL),其中,URL是用于完整地描述網(wǎng)絡(luò)上網(wǎng)頁和其他資源的地址的一種標(biāo)識方法,URL內(nèi)包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它。每一個網(wǎng)頁都具有一個唯一的名稱標(biāo)識,通常稱之為URL地址,這種地址可以是本地磁盤,也可以是局域網(wǎng)上的某一臺計算機(jī),更多的是互聯(lián)網(wǎng)上的站點。
[0027]用戶終端可向服務(wù)器發(fā)送多媒體文件的地址并請求多媒體文件的大小,以使得服務(wù)器從該多媒體文件的地址處查找其文件大小,進(jìn)而用戶終端接收來自服務(wù)器發(fā)送的待下載文件的大小,在本地磁盤創(chuàng)建一個與待下載文件的大小相同的文件。然后,根據(jù)待下載文件的大小分別為多個線程分配其負(fù)責(zé)下載的待下載文件的數(shù)據(jù)段,每個數(shù)據(jù)段具有各自的起始位置信息。
[0028]在步驟S220,多個線程打開目標(biāo)文件,將文件指針設(shè)置在與負(fù)責(zé)下載的數(shù)據(jù)段的起始位置信息相應(yīng)的寫位置。
[0029]經(jīng)過前述步驟的處理后,具體地,多個線程可分別執(zhí)行打開目標(biāo)文件,并將其文件指針設(shè)置在與其負(fù)責(zé)下載的數(shù)據(jù)段的起始位置相應(yīng)的寫位置的操作。
[0030]根據(jù)本發(fā)明的優(yōu)選實施例,步驟S220中打開目標(biāo)文件的處理還可以包括:以共享讀寫方式打開目標(biāo)文件。從而通過操作系統(tǒng)的共享讀寫特性將各個線程負(fù)責(zé)下載的數(shù)據(jù)段相應(yīng)地直接寫入目標(biāo)文件。
[0031 ]在步驟S230,多個線程下載數(shù)據(jù)段,自寫位置起將下載的數(shù)據(jù)段寫入目標(biāo)文件。
[0032]也就是說,在將文件指針設(shè)置在與負(fù)責(zé)下載的數(shù)據(jù)段的起始位置信息相應(yīng)的寫位置之后,多個線程就可分別下載各自負(fù)責(zé)下載的待下載文件的數(shù)據(jù)段,并且自寫位置起將下載的數(shù)據(jù)段寫入目標(biāo)文件。
[0033]本發(fā)明實施例的文件下載方法,由多個線程各自負(fù)責(zé)下載待下載文件的相應(yīng)的數(shù)據(jù)段,并寫入為待下載文件創(chuàng)建的目標(biāo)文件中??梢?,本發(fā)明實施例有效避免了文件合并處理大量占用磁盤導(dǎo)致磁盤讀寫速度較慢的問題,提高了下載速度以及下載的流暢性,進(jìn)一步提升了用戶下載體驗。
[0034]在此基礎(chǔ)上,為了降低可移動設(shè)備移除時造成文件損壞的幾率,需要根據(jù)存儲設(shè)備是否具有可移動特性做區(qū)別處理。
[0035]相應(yīng)地,文件下載方法還可包括:判斷存儲目標(biāo)文件的存儲設(shè)備是否為可移動設(shè)備;當(dāng)存儲目標(biāo)文件的存儲設(shè)備是可移動設(shè)備時,為目標(biāo)文件添加非緩沖讀寫標(biāo)記;當(dāng)存儲目標(biāo)文件的存儲設(shè)備是非可移動設(shè)備時,為目標(biāo)文件添加緩沖讀寫標(biāo)記。
[0036]這里,緩沖讀寫標(biāo)記是相對于上述非緩沖讀寫標(biāo)記而言的,是用于通知操作系統(tǒng)使用系統(tǒng)緩沖以優(yōu)化讀寫速度。在實際應(yīng)用中,除前述區(qū)別添加非緩沖讀寫標(biāo)記與緩沖讀寫標(biāo)記外,還會為目標(biāo)文件添加隨機(jī)讀寫標(biāo)記,需要說明的是,隨機(jī)讀寫標(biāo)記是用于通知操作系統(tǒng)優(yōu)化緩沖。可見,通過區(qū)分存儲設(shè)備是否具有可移動特性,并為目標(biāo)文件添加指示不同的下載存儲方式的標(biāo)記,降低了移除可移動設(shè)備時造成文件損壞的幾率。
[0037]實施例二
[0038]圖3是示出根據(jù)本發(fā)明實施例二的文件下載裝置的邏輯框圖??捎糜趫?zhí)行如圖2所示實施例的方法步驟。
[0039]參照圖3,文件下載裝置包括文件分配模塊310、指針設(shè)置模塊320和文件下載模塊330 ο文件分配模塊310、指針設(shè)置模塊320和文件下載模塊330依次相連接。
[0040]文件分配模塊310用于為待下載文件創(chuàng)建目標(biāo)文件,將所述待下載文件劃分為數(shù)據(jù)段并分配給多個線程負(fù)責(zé)下載,每個數(shù)據(jù)段具有一個起始位置信息。
[0041]根據(jù)本發(fā)明優(yōu)選實施例,文件分配模塊310還用于將創(chuàng)建的目標(biāo)文件的大小設(shè)置為與待下載文件的大小相同。
[0042]指針設(shè)置模塊320用于多個線程打開目標(biāo)文件,將文件指針設(shè)置在與負(fù)責(zé)下載的數(shù)據(jù)段的起始位置信息相應(yīng)的寫位置。
[0043]進(jìn)一步地,指針設(shè)置模塊320還可用于以共享讀寫方式打開目標(biāo)文件。使得多個線程能夠同時訪問目標(biāo)文件。
[0044]文件下載模塊330用于多個線程下載數(shù)據(jù)段,自寫位置起將下載的數(shù)據(jù)段寫入目標(biāo)文件。
[0045]本發(fā)明實施例提供的文件下載裝置,基于多個線程各自負(fù)責(zé)下載待下載文件的相應(yīng)的數(shù)據(jù)段,并寫入為待下載文件創(chuàng)建的目標(biāo)文件中。與現(xiàn)有技術(shù)相比,由于省去了文件合并的過程,使得下載過程更加快速、順暢,提升了用戶下載體驗。
[0046]為了降低可移動設(shè)備移除時造成文件損壞的幾率,因此,進(jìn)一步地,文件下載裝置還可以包括:
[0047]設(shè)備類型判斷模塊(未示出)用于判斷存儲目標(biāo)文件的存儲設(shè)備是否為可移動設(shè)備;
[0048]文件標(biāo)記模塊(未示出)用于當(dāng)存儲目標(biāo)文件的存儲設(shè)備是可移動設(shè)備時,為目標(biāo)文件添加非緩沖讀寫標(biāo)記;當(dāng)存儲目標(biāo)文件的存儲設(shè)備是非可移動設(shè)備時,為目標(biāo)文件添加緩沖讀寫標(biāo)記。
[0049]因此,通過區(qū)分存儲設(shè)備是否具有可移動特性,并為目標(biāo)文件添加指示不同的下載存儲方式的標(biāo)記,降低了移除可移動設(shè)備時造成文件損壞的幾率。
[0050]在本發(fā)明所提供的幾個實施例中,應(yīng)該理解到,所公開的服務(wù)器和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的服務(wù)器實施例僅僅是示意性的,例如,所述模塊的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式。
[0051]另外,在本發(fā)明各個實施例中的各功能模塊可以集成在一個處理模塊中,也可以是各個模塊單獨物理存在,也可以兩個或兩個以上模塊集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能模塊的形式實現(xiàn)。
[0052]上述以軟件功能模塊的形式實現(xiàn)的集成的模塊,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中。上述軟件功能模塊存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory,R0M)、隨機(jī)存取存儲器(Random Access Memory,RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0053]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【主權(quán)項】
1.一種文件下載方法,其特征在于,所述方法包括: 為待下載文件創(chuàng)建目標(biāo)文件,將所述待下載文件劃分為數(shù)據(jù)段并分配給多個線程負(fù)責(zé)下載,每個數(shù)據(jù)段具有一個起始位置信息; 所述多個線程打開所述目標(biāo)文件,將文件指針設(shè)置在與負(fù)責(zé)下載的數(shù)據(jù)段的起始位置信息相應(yīng)的寫位置; 所述多個線程下載所述數(shù)據(jù)段,自所述寫位置起將下載的數(shù)據(jù)段寫入所述目標(biāo)文件。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 判斷存儲所述目標(biāo)文件的存儲設(shè)備是否為可移動設(shè)備; 當(dāng)存儲所述目標(biāo)文件的存儲設(shè)備是可移動設(shè)備時,為所述目標(biāo)文件添加非緩沖讀寫標(biāo)記; 當(dāng)存儲所述目標(biāo)文件的存儲設(shè)備是非可移動設(shè)備時,為所述目標(biāo)文件添加緩沖讀寫標(biāo)記。3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述為待下載文件創(chuàng)建目標(biāo)文件的處理還包括:將創(chuàng)建的目標(biāo)文件的大小設(shè)置為與所述待下載文件的大小相同。4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述打開所述目標(biāo)文件的處理還包括:以共享讀寫方式打開所述目標(biāo)文件。5.一種文件下載裝置,其特征在于,所述裝置包括: 文件分配模塊,用于為待下載文件創(chuàng)建目標(biāo)文件,將所述待下載文件劃分為數(shù)據(jù)段并分配給多個線程負(fù)責(zé)下載,每個數(shù)據(jù)段具有一個起始位置信息; 指針設(shè)置模塊,用于所述多個線程打開所述目標(biāo)文件,將文件指針設(shè)置在與負(fù)責(zé)下載的數(shù)據(jù)段的起始位置信息相應(yīng)的寫位置; 文件下載模塊,用于所述多個線程下載所述數(shù)據(jù)段,自所述寫位置起將下載的數(shù)據(jù)段寫入所述目標(biāo)文件。6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述裝置還包括: 設(shè)備類型判斷模塊,用于判斷存儲所述目標(biāo)文件的存儲設(shè)備是否為可移動設(shè)備; 文件標(biāo)記模塊,用于當(dāng)存儲所述目標(biāo)文件的存儲設(shè)備是可移動設(shè)備時,為所述目標(biāo)文件添加非緩沖讀寫標(biāo)記;當(dāng)存儲所述目標(biāo)文件的存儲設(shè)備是非可移動設(shè)備時,為所述目標(biāo)文件添加緩沖讀寫標(biāo)記。7.根據(jù)權(quán)利要求5或6所述的裝置,其特征在于,所述文件分配模塊還用于將創(chuàng)建的目標(biāo)文件的大小設(shè)置為與所述待下載文件的大小相同。8.根據(jù)權(quán)利要求5或6所述的裝置,其特征在于,所述指針設(shè)置模塊還用于以共享讀寫方式打開所述目標(biāo)文件。
【文檔編號】G06F17/30GK105893409SQ201510794673
【公開日】2016年8月24日
【申請日】2015年11月17日
【發(fā)明人】肖大偉, 王林虎
【申請人】樂視網(wǎng)信息技術(shù)(北京)股份有限公司