文件復(fù)制方法和裝置制造方法
【專(zhuān)利摘要】本發(fā)明提出一種文件復(fù)制方法和裝置,該文件復(fù)制方法包括確定需要復(fù)制的文件;獲取所述需要復(fù)制的文件的大小;根據(jù)所述需要復(fù)制的文件的大小,在不同的系統(tǒng)層面對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,所述不同的系統(tǒng)層面包括:應(yīng)用層或者核心層。該方法能夠提高文件復(fù)制的效率。
【專(zhuān)利說(shuō)明】文件復(fù)制方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種文件復(fù)制方法和裝置。
【背景技術(shù)】
[0002]用戶(hù)可以通過(guò)復(fù)制操作將文件從一個(gè)地方存在到另一個(gè)地方。在移動(dòng)設(shè)備,如手機(jī)上也可以完成文件復(fù)制操作?,F(xiàn)有技術(shù)中,Android手機(jī)上的復(fù)制操作是采用java代碼進(jìn)行的。但是,Android手機(jī)存儲(chǔ)設(shè)備性能相對(duì)較差和java語(yǔ)言對(duì)輸入輸出(Input andOutput, 10)操作封裝較深且函數(shù)異常處理非常多,從而導(dǎo)致在Android手機(jī)上用java語(yǔ)言對(duì)大文件做單線程復(fù)制操作效率比較低。
【發(fā)明內(nèi)容】
[0003]本發(fā)明旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問(wèn)題之一。
[0004]為此,本發(fā)明的一個(gè)目的在于提出一種文件復(fù)制方法,該方法可以提高文件復(fù)制操作的效率。
[0005]本發(fā)明的另一個(gè)目的在于提出一種文件復(fù)制裝置。
[0006]為達(dá)到上述目的,本發(fā)明第一方面實(shí)施例提出的文件復(fù)制方法,包括:確定需要復(fù)制的文件;獲取所述需要復(fù)制的文件的大?。桓鶕?jù)所述需要復(fù)制的文件的大小,在不同的系統(tǒng)層面對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,所述不同的系統(tǒng)層面包括:應(yīng)用層或者核;L.、層。
[0007]本發(fā)明第一方面實(shí)施例提出的文件復(fù)制方法,通過(guò)根據(jù)文件大小在不同的系統(tǒng)層面對(duì)文件進(jìn)行復(fù)制操作,可以避免單一在應(yīng)用層進(jìn)行復(fù)制操作時(shí)產(chǎn)生的效率較低問(wèn)題,提高文件復(fù)制操作的效率。
[0008]為達(dá)到上述目的,本發(fā)明第二方面實(shí)施例提出的文件復(fù)制裝置,包括:確定模塊,用于確定需要復(fù)制的文件;獲取模塊,用于獲取所述需要復(fù)制的文件的大??;復(fù)制模塊,用于根據(jù)所述需要復(fù)制的文件的大小,在不同的系統(tǒng)層面對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,所述不同的系統(tǒng)層面包括:應(yīng)用層或者核心層。
[0009]本發(fā)明第二方面實(shí)施例提出的文件復(fù)制裝置,通過(guò)根據(jù)文件大小在不同的系統(tǒng)層面對(duì)文件進(jìn)行復(fù)制操作,可以避免單一在應(yīng)用層進(jìn)行復(fù)制操作時(shí)產(chǎn)生的效率較低問(wèn)題,提高文件復(fù)制操作的效率。
[0010]為達(dá)到上述目的,本發(fā)明第三方面實(shí)施例提出的移動(dòng)設(shè)備,包括:殼體、處理器、存儲(chǔ)器、電路板和電源電路,其中,電路板安置在殼體圍成的空間內(nèi)部,處理器和存儲(chǔ)器設(shè)置在電路板上;電源電路,用于為移動(dòng)設(shè)備的各個(gè)電路或器件供電;存儲(chǔ)器用于存儲(chǔ)可執(zhí)行程序代碼;處理器通過(guò)讀取存儲(chǔ)器中存儲(chǔ)的可執(zhí)行程序代碼來(lái)運(yùn)行與可執(zhí)行程序代碼對(duì)應(yīng)的程序,以用于執(zhí)行以下步驟:確定需要復(fù)制的文件;獲取所述需要復(fù)制的文件的大?。桓鶕?jù)所述需要復(fù)制的文件的大小,在不同的系統(tǒng)層面對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,所述不同的系統(tǒng)層面包括:應(yīng)用層或者核心層。
[0011]本發(fā)明第三方面實(shí)施例提出的移動(dòng)設(shè)備,通過(guò)根據(jù)文件大小在不同的系統(tǒng)層面對(duì)文件進(jìn)行復(fù)制操作,可以避免單一在應(yīng)用層進(jìn)行復(fù)制操作時(shí)產(chǎn)生的效率較低問(wèn)題,提高文件復(fù)制操作的效率。
[0012]本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0013]本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:
[0014]圖1是本發(fā)明一實(shí)施例提出的文件復(fù)制方法的流程示意圖;
[0015]圖2是本發(fā)明另一實(shí)施例提出的文件復(fù)制方法的流程示意圖;
[0016]圖3是本發(fā)明實(shí)施例中S23的一種實(shí)現(xiàn)流程示意圖;
[0017]圖4是本發(fā)明另一實(shí)施例提出的文件復(fù)制裝置的結(jié)構(gòu)示意圖;
[0018]圖5是本發(fā)明另一實(shí)施例提出的文件復(fù)制裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0019]下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類(lèi)似的標(biāo)號(hào)表示相同或類(lèi)似的元件或具有相同或類(lèi)似功能的元件。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制。相反,本發(fā)明的實(shí)施例包括落入所附加權(quán)利要求書(shū)的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同物。
[0020]圖1是本發(fā)明一實(shí)施例提出的文件復(fù)制方法的流程示意圖,該方法包括:
[0021]Sll:確定需要復(fù)制的文件;
[0022]用戶(hù)在需要復(fù)制操作時(shí),可以選擇菜單欄中的復(fù)制功能項(xiàng)或者采用快捷鍵進(jìn)行復(fù)制操作,系統(tǒng)根據(jù)用戶(hù)的選擇指令或者輸入的快捷鍵信號(hào)可以確定需要復(fù)制的文件。
[0023]具體的,系統(tǒng)可以接收用戶(hù)發(fā)送的對(duì)選擇的文件的復(fù)制指令,將復(fù)制指令對(duì)應(yīng)的用戶(hù)選擇的文件確定為需要復(fù)制的文件。其中,復(fù)制指令包括對(duì)菜單欄中的復(fù)制功能的選擇指令,或者,表明進(jìn)行復(fù)制操作的快捷鍵信號(hào)。
[0024]進(jìn)一步的,當(dāng)系統(tǒng)確定需要復(fù)制的文件后,可以記錄需要復(fù)制的文件的信息,例如記錄需要復(fù)制的文件的源地址路徑。
[0025]S12:獲取所述需要復(fù)制的文件的大小。
[0026]其中,在不同的系統(tǒng)下可以調(diào)用不同的函數(shù)獲取文件的大小。以Android系統(tǒng)為例,例如,可以調(diào)用stat類(lèi)的getFileSize獲取文件大小。當(dāng)然,可以理解的是,也可以采用其他方式獲取文件大小,具體可以采用已有的相應(yīng)系統(tǒng)下獲取文件大小的流程。
[0027]S13:根據(jù)所述需要復(fù)制的文件的大小,在不同的系統(tǒng)層面對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,所述不同的系統(tǒng)層面包括:應(yīng)用層或者核心層。
[0028]其中,以Android系統(tǒng)為例,系統(tǒng)層面可以包括應(yīng)用層、中間層和核心層,具體的,應(yīng)用層可以包括應(yīng)用程序(applicat1ns)和應(yīng)用程序框架(applicat1n framework),中間層可以包括類(lèi)庫(kù)(libraries)和android運(yùn)行時(shí)(android runtime),核心層(linuxkernel)可以具體是指操作系統(tǒng)(operat1n system,OS)。
[0029]通常來(lái)講,應(yīng)用層釆用java代碼實(shí)現(xiàn),核心層釆用c代碼實(shí)現(xiàn),c代碼包括c和
C++o
[0030]相關(guān)技術(shù)中,由于復(fù)制操作是在應(yīng)用層進(jìn)行,當(dāng)文件較大時(shí)會(huì)效率比較低,而本實(shí)施例中,將根據(jù)文件大小在不同系統(tǒng)層面進(jìn)行復(fù)制操作。
[0031]具體的,所述根據(jù)所述需要復(fù)制的文件的大小,在不同的系統(tǒng)層面對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,包括:
[0032]判斷所述需要復(fù)制的文件的大小是否大于預(yù)設(shè)閾值;
[0033]當(dāng)大于所述預(yù)設(shè)閾值時(shí),在核心層對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作;當(dāng)小于或等于所述預(yù)設(shè)閾值時(shí),在應(yīng)用層對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作。
[0034]例如,預(yù)設(shè)閾值時(shí)5M,當(dāng)需要復(fù)制的文件的大小大于5M時(shí),在核心層進(jìn)行復(fù)制操作,而小于或等于5M時(shí),在應(yīng)用層進(jìn)行復(fù)制操作。
[0035]進(jìn)一步的,需要復(fù)制的文件可以位于應(yīng)用層。具體的,在確定需要復(fù)制操作時(shí),可以先獲取要復(fù)制的文件的源地址路徑以及要復(fù)制到的目標(biāo)地址路徑,之后,應(yīng)用層可以向核心層發(fā)送復(fù)制指令,復(fù)制指令中包含要復(fù)制的文件的源地址路徑和復(fù)制到的目標(biāo)地址路徑。
[0036]核心層接收到復(fù)制指令后,可以根據(jù)復(fù)制指令中包含的源地址路徑獲取要復(fù)制的文件,之后在核心層完成復(fù)制操作,并將復(fù)制后的文件存入目標(biāo)地址路徑指定的位置。
[0037]具體的,核心層可以將要復(fù)制的文件分為至少兩個(gè)文件單元,且核心層可以創(chuàng)建線程池,線程池中包括至少兩個(gè)線程,在進(jìn)行復(fù)制操作時(shí),每個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作。進(jìn)一步的,多個(gè)線程之間可以采用并行方式進(jìn)行處理。
[0038]可選的,核心層處理的要復(fù)制的文件可以是大小大于預(yù)設(shè)閾值的文件,例如大于5M的文件。
[0039]核心層在對(duì)文件進(jìn)行劃分時(shí),可以將每個(gè)文件單元設(shè)置為小于預(yù)設(shè)閾值,例如,將文件劃分為多個(gè)文件單元,每個(gè)文件單元小于5M??蛇x的,核心層可以均勻劃分,即每個(gè)文件單元的大小相同,例如,劃分得到多個(gè)文件單元,每個(gè)文件單元是3M ;或者,劃分時(shí)也可以設(shè)置每個(gè)文件單元的大小不同,但每個(gè)文件單元的大小小于預(yù)設(shè)閾值,例如,劃分得到多個(gè)文件單元,一個(gè)文件單元是3M,另一個(gè)文件單元是2M等。
[0040]進(jìn)一步的,當(dāng)線程池中的線程的個(gè)數(shù)小于文件單元的個(gè)數(shù)時(shí),每個(gè)線程可以處理多個(gè)文件單元,例如,第一線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作,并在完成后,等待新的任務(wù),當(dāng)存在沒(méi)有處理的文件單元時(shí),該第一線程還可以對(duì)沒(méi)有處理的文件單元中的一個(gè)文件單元再次進(jìn)行復(fù)制操作。依此類(lèi)推,通過(guò)線程池中的線程完成對(duì)所有文件單元的復(fù)制操作。
[0041]本實(shí)施例通過(guò)根據(jù)文件大小在不同的系統(tǒng)層面對(duì)文件進(jìn)行復(fù)制操作,可以避免單一在應(yīng)用層進(jìn)行復(fù)制操作時(shí)產(chǎn)生的效率較低問(wèn)題,提高文件復(fù)制操作的效率。
[0042]圖2是本發(fā)明另一實(shí)施例提出的文件復(fù)制方法的流程示意圖,該方法包括:
[0043]S21:確定需要復(fù)制的文件。
[0044]本實(shí)施例提出的方法所在的平臺(tái)可以是具有Android系統(tǒng)的手機(jī)等移動(dòng)設(shè)備。
[0045]Android系統(tǒng)可以根據(jù)用戶(hù)輸入的指令判斷用戶(hù)是否進(jìn)行復(fù)制操作,例如,Android系統(tǒng)根據(jù)用戶(hù)輸入的對(duì)菜單的選擇信號(hào)或者選擇的快捷鍵的信號(hào)等確定用戶(hù)是否需要進(jìn)行復(fù)制操作。
[0046]當(dāng)Android系統(tǒng)確定用戶(hù)選擇了復(fù)制菜單,或者選擇了復(fù)制操作對(duì)應(yīng)的快捷鍵,可以確定用戶(hù)需要進(jìn)行復(fù)制操作。再根據(jù)用戶(hù)需要進(jìn)行復(fù)制操作時(shí)選中的文件,確定需要復(fù)制的文件。
[0047]S22:判斷該需要復(fù)制的文件的大小是否大于預(yù)設(shè)閾值,若是,執(zhí)行S23,否則,執(zhí)行 S24。
[0048]其中,預(yù)設(shè)閾值可以是5M。
[0049]不同系統(tǒng)可以調(diào)用該系統(tǒng)配置的用于獲取文件大小的函數(shù)來(lái)獲取需要復(fù)制的文件的大小,例如,在Android系統(tǒng)中可以調(diào)用stat類(lèi)的getFileSize函數(shù)獲取要復(fù)制的文件的大小。
[0050]S23:在核心層采用多線程完成復(fù)制操作。
[0051]具體的,應(yīng)用層可以采用java代碼實(shí)現(xiàn),核心層可以采用c代碼實(shí)現(xiàn),以應(yīng)用層用java層表示,核心層用c代碼層表示為例,參見(jiàn)圖3, S23可以具體包括:
[0052]S31:java層向c代碼層發(fā)送復(fù)制指令,復(fù)制指令中包含要復(fù)制的文件的源地址路徑和目標(biāo)地址路徑。
[0053]S32:c代碼層根據(jù)源地址路徑獲取要復(fù)制的文件,并將要復(fù)制的文件劃分為至少兩個(gè)文件單元。
[0054]其中,每個(gè)文件單元的大小可以預(yù)先設(shè)置,每個(gè)文件單元的大小小于預(yù)設(shè)閾值,例如小于5M。
[0055]S33:c代碼層判斷是否完成線程池的初始化,若是,執(zhí)行35,否則執(zhí)行S34。
[0056]S34:c代碼層創(chuàng)建線程池,并完成初始化。
[0057]其中,線程池中包括的線程的個(gè)數(shù)可以預(yù)先設(shè)置,例如,預(yù)設(shè)設(shè)置包括3個(gè)線程,則可以創(chuàng)建一個(gè)包括3個(gè)線程的線程池。
[0058]其中,S32與S33-S34無(wú)時(shí)序限制關(guān)系,即可以先劃分文件單元或者也可以先創(chuàng)建線程池。
[0059]S35:由線程池中一個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作。
[0060]具體的,可以將每個(gè)文件單元作為一個(gè)復(fù)制任務(wù)添加到線程池中,線程池中的空閑線程收到任務(wù)后就會(huì)對(duì)文件單元進(jìn)行復(fù)制操作。其中,在復(fù)制任務(wù)中還可以包括目標(biāo)地址路徑,以便將文件單元復(fù)制到目標(biāo)地址路徑指定的位置。
[0061]進(jìn)一步的,多個(gè)線程之間可以采用并行方式進(jìn)行復(fù)制操作,以提高效率。
[0062]S36:線程池中的每個(gè)線程完成一次復(fù)制任務(wù)后,等待新的復(fù)制任務(wù)。
[0063]例如,劃分得到5個(gè)文件單元,而創(chuàng)建的線程池中包括3個(gè)線程,當(dāng)這三個(gè)線程分別對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作后,其中的兩個(gè)線程還可以再次對(duì)剩余的兩個(gè)文件單元進(jìn)行復(fù)制操作,以完成對(duì)所有文件單元的復(fù)制操作,得到完整的復(fù)制后的文件。
[0064]其中,線程在獲取新的復(fù)制任務(wù)后可以重復(fù)執(zhí)行S35-S36,直至所有的文件單元都完成復(fù)制操作。
[0065]S24:在應(yīng)用層完成復(fù)制操作。
[0066]例如,在應(yīng)用層調(diào)用應(yīng)用程序編程接口(Applicat1n Programming Interface,API)完成復(fù)制操作。
[0067]由于文件較小時(shí),在應(yīng)用層也可以保證文件復(fù)制的效率,因此可以直接在應(yīng)用層進(jìn)行處理,降低需要在核心層處理時(shí)的流程繁瑣度。
[0068]本實(shí)施例通過(guò)文件大于預(yù)設(shè)閾值時(shí)在核心層完成文件復(fù)制操作,可以大大提高文件在Android手機(jī)上的復(fù)制效率,可以提高對(duì)1接口的占用率,從而減少?gòu)?fù)制時(shí)間,可以減少函數(shù)的異常處理點(diǎn),提高復(fù)制效率。本實(shí)施例通過(guò)多線程并行處理可以進(jìn)一步降低復(fù)制時(shí)間,提聞復(fù)制效率。
[0069]圖4是本發(fā)明另一實(shí)施例提出的文件復(fù)制裝置的結(jié)構(gòu)示意圖,該裝置40包括確定模塊41、獲取模塊42和復(fù)制模塊43。
[0070]確定模塊41用于確定需要復(fù)制的文件;
[0071]用戶(hù)在需要復(fù)制操作時(shí),可以選擇菜單欄中的復(fù)制功能項(xiàng)或者采用快捷鍵進(jìn)行復(fù)制操作,系統(tǒng)根據(jù)用戶(hù)的選擇指令或者輸入的快捷鍵信號(hào)可以確定需要復(fù)制的文件。
[0072]具體的,系統(tǒng)可以接收用戶(hù)發(fā)送的對(duì)選擇的文件的復(fù)制指令,將復(fù)制指令對(duì)應(yīng)的用戶(hù)選擇的文件確定為需要復(fù)制的文件。其中,復(fù)制指令包括對(duì)菜單欄中的復(fù)制功能的選擇指令,或者,表明進(jìn)行復(fù)制操作的快捷鍵信號(hào)。
[0073]進(jìn)一步的,當(dāng)系統(tǒng)確定需要復(fù)制的文件后,可以記錄需要復(fù)制的文件的信息,例如記錄需要復(fù)制的文件的源地址路徑。
[0074]本實(shí)施例提出的方法所在的平臺(tái)可以是具有Android系統(tǒng)的手機(jī)等移動(dòng)設(shè)備。
[0075]Android系統(tǒng)可以根據(jù)用戶(hù)輸入的指令判斷用戶(hù)是否進(jìn)行復(fù)制操作,例如,Android系統(tǒng)根據(jù)用戶(hù)輸入的對(duì)菜單的選擇信號(hào)或者選擇的快捷鍵的信號(hào)等確定用戶(hù)是否需要進(jìn)行復(fù)制操作。
[0076]當(dāng)Android系統(tǒng)確定用戶(hù)選擇了復(fù)制菜單,或者選擇了復(fù)制操作對(duì)應(yīng)的快捷鍵,可以確定用戶(hù)需要進(jìn)行復(fù)制操作。再根據(jù)用戶(hù)需要進(jìn)行復(fù)制操作時(shí)選中的文件,確定需要復(fù)制的文件。
[0077]獲取模塊42用于獲取所述需要復(fù)制的文件的大小。
[0078]其中,在不同的系統(tǒng)下可以調(diào)用不同的函數(shù)獲取文件的大小。以Android系統(tǒng)為例,例如,可以調(diào)用stat類(lèi)的getFileSize獲取文件大小。當(dāng)然,可以理解的是,也可以采用其他方式獲取文件大小,具體可以采用已有的相應(yīng)系統(tǒng)下獲取文件大小的流程。
[0079]復(fù)制模塊43用于根據(jù)所述需要復(fù)制的文件的大小,在不同的系統(tǒng)層面對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,所述不同的系統(tǒng)層面包括:應(yīng)用層或者核心層。
[0080]其中,以Android系統(tǒng)為例,系統(tǒng)層面可以包括應(yīng)用層、中間層和核心層,具體的,應(yīng)用層可以包括應(yīng)用程序(applicat1ns)和應(yīng)用程序框架(applicat1n framework),中間層可以包括類(lèi)庫(kù)(libraries)和android運(yùn)行時(shí)(android runtime),核心層(linuxkernel)可以具體是指操作系統(tǒng)(operat1n system, OS)。
[0081]通常來(lái)講,應(yīng)用層采用java代碼實(shí)現(xiàn),核心層采用c代碼實(shí)現(xiàn),c代碼包括c和
C++o
[0082]相關(guān)技術(shù)中,由于復(fù)制操作是在應(yīng)用層進(jìn)行,當(dāng)文件較大時(shí)會(huì)效率比較低,而本實(shí)施例中,將根據(jù)文件大小在不同系統(tǒng)層面進(jìn)行復(fù)制操作。
[0083]具體的,所述根據(jù)所述需要復(fù)制的文件的大小,在不同的系統(tǒng)層面對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,包括:
[0084]判斷所述需要復(fù)制的文件的大小是否大于預(yù)設(shè)閾值;
[0085]當(dāng)大于所述預(yù)設(shè)閾值時(shí),在核心層對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作;當(dāng)小于或等于所述預(yù)設(shè)閾值時(shí),在應(yīng)用層對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作。
[0086]例如,預(yù)設(shè)閾值時(shí)5M,當(dāng)需要復(fù)制的文件的大小大于5M時(shí),在核心層進(jìn)行復(fù)制操作,而小于或等于5M時(shí),在應(yīng)用層進(jìn)行復(fù)制操作。
[0087]進(jìn)一步的,需要復(fù)制的文件可以位于應(yīng)用層。具體的,在確定需要復(fù)制操作時(shí),可以先獲取要復(fù)制的文件的源地址路徑以及要復(fù)制到的目標(biāo)地址路徑,之后,應(yīng)用層可以向核心層發(fā)送復(fù)制指令,復(fù)制指令中包含要復(fù)制的文件的源地址路徑和復(fù)制到的目標(biāo)地址路徑。
[0088]核心層接收到復(fù)制指令后,可以根據(jù)復(fù)制指令中包含的源地址路徑獲取要復(fù)制的文件,之后在核心層完成復(fù)制操作,并將復(fù)制后的文件存入目標(biāo)地址路徑指定的位置。
[0089]具體的,核心層可以將要復(fù)制的文件分為至少兩個(gè)文件單元,且核心層可以創(chuàng)建線程池,線程池中包括至少兩個(gè)線程,在進(jìn)行復(fù)制操作時(shí),每個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作。進(jìn)一步的,多個(gè)線程之間可以采用并行方式進(jìn)行處理。
[0090]可選的,核心層處理的要復(fù)制的文件可以是大小大于預(yù)設(shè)閾值的文件,例如大于5M的文件。
[0091]核心層在對(duì)文件進(jìn)行劃分時(shí),可以將每個(gè)文件單元設(shè)置為小于預(yù)設(shè)閾值,例如,將文件劃分為多個(gè)文件單元,每個(gè)文件單元小于5M??蛇x的,核心層可以均勻劃分,即每個(gè)文件單元的大小相同,例如,劃分得到多個(gè)文件單元,每個(gè)文件單元是3M ;或者,劃分時(shí)也可以設(shè)置每個(gè)文件單元的大小不同,但每個(gè)文件單元的大小小于預(yù)設(shè)閾值,例如,劃分得到多個(gè)文件單元,一個(gè)文件單元是3M,另一個(gè)文件單元是2M等。
[0092]進(jìn)一步的,當(dāng)線程池中的線程的個(gè)數(shù)小于文件單元的個(gè)數(shù)時(shí),每個(gè)線程可以處理多個(gè)文件單元,例如,第一線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作,并在完成后,等待新的任務(wù),當(dāng)存在沒(méi)有處理的文件單元時(shí),該第一線程還可以對(duì)沒(méi)有處理的文件單元中的一個(gè)文件單元再次進(jìn)行復(fù)制操作。依此類(lèi)推,通過(guò)線程池中的線程完成對(duì)所有文件單元的復(fù)制操作。
[0093]一個(gè)實(shí)施例中,參見(jiàn)圖5,復(fù)制模塊43包括:第一單元431、第二單元432和第三單元 433。
[0094]第一單元431用于判斷所述需要復(fù)制的文件的大小是否大于預(yù)設(shè)閾值;其中,預(yù)設(shè)閾值可以是5M。
[0095]第二單元432用于當(dāng)大于所述預(yù)設(shè)閾值時(shí),在核心層對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作;
[0096]所述第二單元432具體用于:
[0097]在核心層中將所述要復(fù)制的文件分為至少兩個(gè)文件單元,每個(gè)文件單元的大小小于所述預(yù)設(shè)閾值;
[0098]采用在核心層中預(yù)先完成初始化的線程池中的每個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作。
[0099]第三單元433用于當(dāng)小于或等于所述預(yù)設(shè)閾值時(shí),在應(yīng)用層對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作。例如,在應(yīng)用層調(diào)用應(yīng)用程序編程接口(Applicat1n ProgrammingInterface, API)完成復(fù)制操作。
[0100]一個(gè)實(shí)施例中,所述第二單元432具體用于:采用并行方式,每個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作。
[0101]一個(gè)實(shí)施例中,所述第二單元432具體用于:當(dāng)所述文件單元的個(gè)數(shù)大于所述線程池中線程的個(gè)數(shù)時(shí),每個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作,并在完成對(duì)一個(gè)文件單元的復(fù)制操作后,再次對(duì)新的文件單元進(jìn)行復(fù)制操作直至所有文件單元都完成復(fù)制操作。
[0102]例如,劃分得到5個(gè)文件單元,而創(chuàng)建的線程池中包括3個(gè)線程,當(dāng)這三個(gè)線程分別對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作后,其中的兩個(gè)線程還可以再次對(duì)剩余的兩個(gè)文件單元進(jìn)行復(fù)制操作,以完成對(duì)所有文件單元的復(fù)制操作,得到完整的復(fù)制后的文件。
[0103]一個(gè)實(shí)施例中,所述第二單元432還用于:接收所述應(yīng)用層發(fā)送的復(fù)制指令,以便在接收到所述復(fù)制指令后,在核心層中對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作。
[0104]所述第二單元432還用于:判斷在所述第二層中是否存在完成初始化的線程池,并在不存在時(shí),建立線程池,并對(duì)所述線程池進(jìn)行初始化,所述線程池中包括預(yù)設(shè)個(gè)數(shù)的線程。
[0105]其中,線程池中包括的線程的個(gè)數(shù)可以預(yù)先設(shè)置,例如,預(yù)設(shè)設(shè)置包括3個(gè)線程,則可以創(chuàng)建一個(gè)包括3個(gè)線程的線程池。
[0106]本實(shí)施例通過(guò)文件大于預(yù)設(shè)閾值時(shí)在核心層完成文件復(fù)制操作,可以大大提高文件在Android手機(jī)上的復(fù)制效率,可以提高對(duì)1接口的占用率,從而減少?gòu)?fù)制時(shí)間,可以減少函數(shù)的異常處理點(diǎn),提高復(fù)制效率。本實(shí)施例通過(guò)多線程并行處理可以進(jìn)一步降低復(fù)制時(shí)間,提聞復(fù)制效率。
[0107]本發(fā)明實(shí)施例還提供了一種移動(dòng)設(shè)備,該移動(dòng)設(shè)備包括殼體、處理器、存儲(chǔ)器、電路板和電源電路,其中,電路板安置在殼體圍成的空間內(nèi)部,處理器和存儲(chǔ)器設(shè)置在電路板上;電源電路,用于為移動(dòng)設(shè)備的各個(gè)電路或器件供電;存儲(chǔ)器用于存儲(chǔ)可執(zhí)行程序代碼;處理器通過(guò)讀取存儲(chǔ)器中存儲(chǔ)的可執(zhí)行程序代碼來(lái)運(yùn)行與可執(zhí)行程序代碼對(duì)應(yīng)的程序,以用于執(zhí)行以下步驟:
[0108]Sir:確定需要復(fù)制的文件;
[0109]用戶(hù)在需要復(fù)制操作時(shí),可以選擇菜單欄中的復(fù)制功能項(xiàng)或者采用快捷鍵進(jìn)行復(fù)制操作,系統(tǒng)根據(jù)用戶(hù)的選擇指令或者輸入的快捷鍵信號(hào)可以確定需要復(fù)制的文件。
[0110]具體的,系統(tǒng)可以接收用戶(hù)發(fā)送的對(duì)選擇的文件的復(fù)制指令,將復(fù)制指令對(duì)應(yīng)的用戶(hù)選擇的文件確定為需要復(fù)制的文件。其中,復(fù)制指令包括對(duì)菜單欄中的復(fù)制功能的選擇指令,或者,表明進(jìn)行復(fù)制操作的快捷鍵信號(hào)。
[0111]進(jìn)一步的,當(dāng)系統(tǒng)確定需要復(fù)制的文件后,可以記錄需要復(fù)制的文件的信息,例如記錄需要復(fù)制的文件的源地址路徑。
[0112]S12’:獲取所述需要復(fù)制的文件的大小。
[0113]其中,在不同的系統(tǒng)下可以調(diào)用不同的函數(shù)獲取文件的大小。以Android系統(tǒng)為例,例如,可以調(diào)用stat類(lèi)的getFileSize獲取文件大小。當(dāng)然,可以理解的是,也可以采用其他方式獲取文件大小,具體可以采用已有的相應(yīng)系統(tǒng)下獲取文件大小的流程。
[0114]S13’:根據(jù)所述需要復(fù)制的文件的大小,在不同的系統(tǒng)層面對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,所述不同的系統(tǒng)層面包括:應(yīng)用層或者核心層。
[0115]其中,以Android系統(tǒng)為例,系統(tǒng)層面可以包括應(yīng)用層、中間層和核心層,具體的,應(yīng)用層可以包括應(yīng)用程序(applicat1ns)和應(yīng)用程序框架(applicat1n framework),中間層可以包括類(lèi)庫(kù)(libraries)和android運(yùn)行時(shí)(android runtime),核心層(linuxkernel)可以具體是指操作系統(tǒng)(operat1n system,OS)。
[0116]通常來(lái)講,應(yīng)用層釆用java代碼實(shí)現(xiàn),核心層釆用c代碼實(shí)現(xiàn),c代碼包括c和
C++o
[0117]相關(guān)技術(shù)中,由于復(fù)制操作是在應(yīng)用層進(jìn)行,當(dāng)文件較大時(shí)會(huì)效率比較低,而本實(shí)施例中,將根據(jù)文件大小在不同系統(tǒng)層面進(jìn)行復(fù)制操作。
[0118]具體的,所述根據(jù)所述需要復(fù)制的文件的大小,在不同的系統(tǒng)層面對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,包括:
[0119]判斷所述需要復(fù)制的文件的大小是否大于預(yù)設(shè)閾值;
[0120]當(dāng)大于所述預(yù)設(shè)閾值時(shí),在核心層對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作;當(dāng)小于或等于所述預(yù)設(shè)閾值時(shí),在應(yīng)用層對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作。
[0121]例如,預(yù)設(shè)閾值時(shí)5M,當(dāng)需要復(fù)制的文件的大小大于5M時(shí),在核心層進(jìn)行復(fù)制操作,而小于或等于5M時(shí),在應(yīng)用層進(jìn)行復(fù)制操作。
[0122]進(jìn)一步的,需要復(fù)制的文件可以位于應(yīng)用層。具體的,在確定需要復(fù)制操作時(shí),可以先獲取要復(fù)制的文件的源地址路徑以及要復(fù)制到的目標(biāo)地址路徑,之后,應(yīng)用層可以向核心層發(fā)送復(fù)制指令,復(fù)制指令中包含要復(fù)制的文件的源地址路徑和復(fù)制到的目標(biāo)地址路徑。
[0123]核心層接收到復(fù)制指令后,可以根據(jù)復(fù)制指令中包含的源地址路徑獲取要復(fù)制的文件,之后在核心層完成復(fù)制操作,并將復(fù)制后的文件存入目標(biāo)地址路徑指定的位置。
[0124]具體的,核心層可以將要復(fù)制的文件分為至少兩個(gè)文件單元,且核心層可以創(chuàng)建線程池,線程池中包括至少兩個(gè)線程,在進(jìn)行復(fù)制操作時(shí),每個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作。進(jìn)一步的,多個(gè)線程之間可以采用并行方式進(jìn)行處理。
[0125]可選的,核心層處理的要復(fù)制的文件可以是大小大于預(yù)設(shè)閾值的文件,例如大于5M的文件。
[0126]核心層在對(duì)文件進(jìn)行劃分時(shí),可以將每個(gè)文件單元設(shè)置為小于預(yù)設(shè)閾值,例如,將文件劃分為多個(gè)文件單元,每個(gè)文件單元小于5M??蛇x的,核心層可以均勻劃分,即每個(gè)文件單元的大小相同,例如,劃分得到多個(gè)文件單元,每個(gè)文件單元是3M ;或者,劃分時(shí)也可以設(shè)置每個(gè)文件單元的大小不同,但每個(gè)文件單元的大小小于預(yù)設(shè)閾值,例如,劃分得到多個(gè)文件單元,一個(gè)文件單元是3M,另一個(gè)文件單元是2M等。
[0127]進(jìn)一步的,當(dāng)線程池中的線程的個(gè)數(shù)小于文件單元的個(gè)數(shù)時(shí),每個(gè)線程可以處理多個(gè)文件單元,例如,第一線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作,并在完成后,等待新的任務(wù),當(dāng)存在沒(méi)有處理的文件單元時(shí),該第一線程還可以對(duì)沒(méi)有處理的文件單元中的一個(gè)文件單元再次進(jìn)行復(fù)制操作。依此類(lèi)推,通過(guò)線程池中的線程完成對(duì)所有文件單元的復(fù)制操作。
[0128]本實(shí)施例通過(guò)根據(jù)文件大小在不同的系統(tǒng)層面對(duì)文件進(jìn)行復(fù)制操作,可以避免單一在應(yīng)用層進(jìn)行復(fù)制操作時(shí)產(chǎn)生的效率較低問(wèn)題,提高文件復(fù)制操作的效率。
[0129]另一實(shí)施例中,處理器通過(guò)讀取存儲(chǔ)器中存儲(chǔ)的可執(zhí)行程序代碼來(lái)運(yùn)行與可執(zhí)行程序代碼對(duì)應(yīng)的程序,以用于執(zhí)行以下步驟:
[0130]S21’:確定需要復(fù)制的文件。
[0131]本實(shí)施例提出的方法所在的平臺(tái)可以是具有Android系統(tǒng)的手機(jī)等移動(dòng)設(shè)備。
[0132]Android系統(tǒng)可以根據(jù)用戶(hù)輸入的指令判斷用戶(hù)是否進(jìn)行復(fù)制操作,例如,Android系統(tǒng)根據(jù)用戶(hù)輸入的對(duì)菜單的選擇信號(hào)或者選擇的快捷鍵的信號(hào)等確定用戶(hù)是否需要進(jìn)行復(fù)制操作。
[0133]當(dāng)Android系統(tǒng)確定用戶(hù)選擇了復(fù)制菜單,或者選擇了復(fù)制操作對(duì)應(yīng)的快捷鍵,可以確定用戶(hù)需要進(jìn)行復(fù)制操作。再根據(jù)用戶(hù)需要進(jìn)行復(fù)制操作時(shí)選中的文件,確定需要復(fù)制的文件。
[0134]S22’:判斷該需要復(fù)制的文件的大小是否大于預(yù)設(shè)閾值,若是,執(zhí)行S23’,否則,執(zhí)行 S24,。
[0135]其中,預(yù)設(shè)閾值可以是5M。
[0136]不同系統(tǒng)可以調(diào)用該系統(tǒng)配置的用于獲取文件大小的函數(shù)來(lái)獲取需要復(fù)制的文件的大小,例如,在Android系統(tǒng)中可以調(diào)用stat類(lèi)的getFileSize函數(shù)獲取要復(fù)制的文件的大小。
[0137]S23’:在核心層采用多線程完成復(fù)制操作。
[0138]具體的,應(yīng)用層可以采用java代碼實(shí)現(xiàn),核心層可以采用c代碼實(shí)現(xiàn),以應(yīng)用層用java層表示,核心層用c代碼層表示為例,參見(jiàn)圖3, S23可以具體包括:
[0139]S31’: java層向c代碼層發(fā)送復(fù)制指令,復(fù)制指令中包含要復(fù)制的文件的源地址路徑和目標(biāo)地址路徑。
[0140]S32’:c代碼層根據(jù)源地址路徑獲取要復(fù)制的文件,并將要復(fù)制的文件劃分為至少兩個(gè)文件單元。
[0141]其中,每個(gè)文件單元的大小可以預(yù)先設(shè)置,每個(gè)文件單元的大小小于預(yù)設(shè)閾值,例如小于5M。
[0142]S33’:c代碼層判斷是否完成線程池的初始化,若是,執(zhí)行35’,否則執(zhí)行S34’。
[0143]S34’:c代碼層創(chuàng)建線程池,并完成初始化。
[0144]其中,線程池中包括的線程的個(gè)數(shù)可以預(yù)先設(shè)置,例如,預(yù)設(shè)設(shè)置包括3個(gè)線程,則可以創(chuàng)建一個(gè)包括3個(gè)線程的線程池。
[0145]其中,S32’與S33’ -S34’無(wú)時(shí)序限制關(guān)系,即可以先劃分文件單元或者也可以先創(chuàng)建線程池。
[0146]S35’:由線程池中一個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作。
[0147]具體的,可以將每個(gè)文件單元作為一個(gè)復(fù)制任務(wù)添加到線程池中,線程池中的空閑線程收到任務(wù)后就會(huì)對(duì)文件單元進(jìn)行復(fù)制操作。其中,在復(fù)制任務(wù)中還可以包括目標(biāo)地址路徑,以便將文件單元復(fù)制到目標(biāo)地址路徑指定的位置。
[0148]進(jìn)一步的,多個(gè)線程之間可以采用并行方式進(jìn)行復(fù)制操作,以提高效率。
[0149]S36’:線程池中的每個(gè)線程完成一次復(fù)制任務(wù)后,等待新的復(fù)制任務(wù)。
[0150]例如,劃分得到5個(gè)文件單元,而創(chuàng)建的線程池中包括3個(gè)線程,當(dāng)這三個(gè)線程分別對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作后,其中的兩個(gè)線程還可以再次對(duì)剩余的兩個(gè)文件單元進(jìn)行復(fù)制操作,以完成對(duì)所有文件單元的復(fù)制操作,得到完整的復(fù)制后的文件。
[0151]其中,線程在獲取新的復(fù)制任務(wù)后可以重復(fù)執(zhí)行S35-S36,直至所有的文件單元都完成復(fù)制操作。
[0152]S24’:在應(yīng)用層完成復(fù)制操作。
[0153]例如,在應(yīng)用層調(diào)用應(yīng)用程序編程接口(Applicat1n Programming Interface,API)完成復(fù)制操作。
[0154]由于文件較小時(shí),在應(yīng)用層也可以保證文件復(fù)制的效率,因此可以直接在應(yīng)用層進(jìn)行處理,降低需要在核心層處理時(shí)的流程繁瑣度。
[0155]本實(shí)施例通過(guò)文件大于預(yù)設(shè)閾值時(shí)在核心層完成文件復(fù)制操作,可以大大提高文件在Android手機(jī)上的復(fù)制效率,可以提高對(duì)1接口的占用率,從而減少?gòu)?fù)制時(shí)間,可以減少函數(shù)的異常處理點(diǎn),提高復(fù)制效率。本實(shí)施例通過(guò)多線程并行處理可以進(jìn)一步降低復(fù)制時(shí)間,提聞復(fù)制效率。
[0156]需要說(shuō)明的是,在本發(fā)明的描述中,術(shù)語(yǔ)“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對(duì)重要性。此外,在本發(fā)明的描述中,除非另有說(shuō)明,“多個(gè)”的含義是兩個(gè)或兩個(gè)以上。
[0157]流程圖中或在此以其他方式描述的任何過(guò)程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過(guò)程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來(lái)執(zhí)行功能,這應(yīng)被本發(fā)明的實(shí)施例所屬【技術(shù)領(lǐng)域】的技術(shù)人員所理解。
[0158]應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來(lái)實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來(lái)實(shí)現(xiàn)。例如,如果用硬件來(lái)實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來(lái)實(shí)現(xiàn):具有用于對(duì)數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏輯門(mén)電路的離散邏輯電路,具有合適的組合邏輯門(mén)電路的專(zhuān)用集成電路,可編程門(mén)陣列(PGA),現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)等。
[0159]本【技術(shù)領(lǐng)域】的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。
[0160]此外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理模塊中,也可以是各個(gè)單元單獨(dú)物理存在,也可以?xún)蓚€(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。
[0161]在本說(shuō)明書(shū)的描述中,參考術(shù)語(yǔ)“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說(shuō)明書(shū)中,對(duì)上述術(shù)語(yǔ)的示意性表述不一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何的一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。
[0162]盡管上面已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對(duì)本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對(duì)上述實(shí)施例進(jìn)行變化、修改、替換和變型。
【權(quán)利要求】
1.一種文件復(fù)制方法,其特征在于,包括: 確定需要復(fù)制的文件; 獲取所述需要復(fù)制的文件的大?。? 根據(jù)所述需要復(fù)制的文件的大小,在不同的系統(tǒng)層面對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,所述不同的系統(tǒng)層面包括:應(yīng)用層或者核心層。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述需要復(fù)制的文件的大小,在不同的系統(tǒng)層面對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,包括: 判斷所述需要復(fù)制的文件的大小是否大于預(yù)設(shè)閾值; 當(dāng)大于所述預(yù)設(shè)閾值時(shí),在核心層對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作; 當(dāng)小于或等于所述預(yù)設(shè)閾值時(shí),在應(yīng)用層對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述預(yù)設(shè)閾值是5M。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述在核心層對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,包括: 在核心層中將所述要復(fù)制的文件分為至少兩個(gè)文件單元,每個(gè)文件單元的大小小于所述預(yù)設(shè)閾值; 采用在核心層中預(yù)先完成初始化的線程池中的每個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述每個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作,包括: 采用并行方式,每個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述每個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作,包括: 當(dāng)所述文件單元的個(gè)數(shù)大于所述線程池中線程的個(gè)數(shù)時(shí),每個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作,并在完成對(duì)一個(gè)文件單元的復(fù)制操作后,再次對(duì)新的文件單元進(jìn)行復(fù)制操作直至所有文件單元都完成復(fù)制操作。
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述在核心層中對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作之前,所述方法還包括: 所述核心層接收所述應(yīng)用層發(fā)送的復(fù)制指令,以便在接收到所述復(fù)制指令后,在核心層中對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述接收所述復(fù)制指令之后,所述方法還包括: 判斷在所述核心層中是否存在完成初始化的線程池,并在不存在時(shí),建立線程池,并對(duì)所述線程池進(jìn)行初始化,所述線程池中包括預(yù)設(shè)個(gè)數(shù)的線程。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述預(yù)設(shè)個(gè)數(shù)是3。
10.根據(jù)權(quán)利要求1至9任一項(xiàng)所述的方法,其特征在于,所述應(yīng)用層采用java代碼實(shí)現(xiàn),所述核心層采用c代碼實(shí)現(xiàn)。
11.一種文件復(fù)制裝置,其特征在于,包括: 確定模塊,用于確定需要復(fù)制的文件; 獲取模塊,用于獲取所述需要復(fù)制的文件的大小; 復(fù)制模塊,用于根據(jù)所述需要復(fù)制的文件的大小,在不同的系統(tǒng)層面對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,所述不同的系統(tǒng)層面包括:應(yīng)用層或者核心層。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述復(fù)制模塊包括: 第一單元,用于判斷所述需要復(fù)制的文件的大小是否大于預(yù)設(shè)閾值; 第二單元,用于當(dāng)大于所述預(yù)設(shè)閾值時(shí),在核心層對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作; 第三單元,用于當(dāng)小于或等于所述預(yù)設(shè)閾值時(shí),在應(yīng)用層對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述第一單元采用的所述預(yù)設(shè)閾值是5M。
14.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述第二單元具體用于: 在核心層中將所述要復(fù)制的文件分為至少兩個(gè)文件單元,每個(gè)文件單元的大小小于所述預(yù)設(shè)閾值; 采用在核心層中預(yù)先完成初始化的線程池中的每個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作。
15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述第二單元具體用于: 采用并行方式,每個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作。
16.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述第二單元具體用于: 當(dāng)所述文件單元的個(gè)數(shù)大于所述線程池中線程的個(gè)數(shù)時(shí),每個(gè)線程對(duì)一個(gè)文件單元進(jìn)行復(fù)制操作,并在完成對(duì)一個(gè)文件單元的復(fù)制操作后,再次對(duì)新的文件單元進(jìn)行復(fù)制操作直至所有文件單元都完成復(fù)制操作。
17.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述第二單元還用于: 接收所述應(yīng)用層發(fā)送的復(fù)制指令,以便在接收到所述復(fù)制指令后,在核心層中對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作。
18.根據(jù)權(quán)利要求17所述的裝置,其特征在于,所述第二單元還用于: 判斷在所述第二層中是否存在完成初始化的線程池,并在不存在時(shí),建立線程池,并對(duì)所述線程池進(jìn)行初始化,所述線程池中包括預(yù)設(shè)個(gè)數(shù)的線程。
19.根據(jù)權(quán)利要求18所述的裝置,其特征在于,所述預(yù)設(shè)個(gè)數(shù)是3。
20.根據(jù)權(quán)利要求11至19任一項(xiàng)所述的裝置,其特征在于,所述應(yīng)用層采用java代碼實(shí)現(xiàn),所述核心層采用c代碼實(shí)現(xiàn)。
21.—種移動(dòng)設(shè)備,其特征在于,包括殼體、處理器、存儲(chǔ)器、電路板和電源電路,其中,電路板安置在殼體圍成的空間內(nèi)部,處理器和存儲(chǔ)器設(shè)置在電路板上;電源電路,用于為移動(dòng)設(shè)備的各個(gè)電路或器件供電;存儲(chǔ)器用于存儲(chǔ)可執(zhí)行程序代碼;處理器通過(guò)讀取存儲(chǔ)器中存儲(chǔ)的可執(zhí)行程序代碼來(lái)運(yùn)行與可執(zhí)行程序代碼對(duì)應(yīng)的程序,以用于執(zhí)行以下步驟: 確定需要復(fù)制的文件; 獲取所述需要復(fù)制的文件的大?。? 根據(jù)所述需要復(fù)制的文件的大小,在不同的系統(tǒng)層面對(duì)所述需要復(fù)制的文件進(jìn)行復(fù)制操作,所述不同的系統(tǒng)層面包括:應(yīng)用層或者核心層。
【文檔編號(hào)】G06F17/30GK104133846SQ201410309788
【公開(kāi)日】2014年11月5日 申請(qǐng)日期:2014年6月30日 優(yōu)先權(quán)日:2014年6月30日
【發(fā)明者】潘泉海, 劉桂峰, 姚輝 申請(qǐng)人:珠海市君天電子科技有限公司