專利名稱:一種應用于嵌入式設備的文件搜索方法相關裝置的制作方法
技術領域:
本發(fā)明涉及搜索技術領域,尤其涉及一種應用于嵌入式設備的文件搜索方法文件及相關裝置。
背景技術:
當前嵌入式設備在生活中無處不在,應用范圍越來越廣,發(fā)展得也越來越智能化, 對于數(shù)據(jù)的管理要求也越來越高。而文件分配表(FAT,F(xiàn)ile Allocation Table)系統(tǒng)由于其結構簡單的優(yōu)點,日益為嵌入式設備所支持。目前在嵌入式設備的FAT系統(tǒng)中進行文件搜索的流程如下首先,獲取目標文件的文件信息(包括文件名、文件類型),然后從FAT系統(tǒng)中的首個目錄項開始,對搜索到的文件逐一進行分析,獲取每個文件的詳細信息(如文件名、文件類型等)并與目標文件進行匹配,若不一致,則表明搜索到的文件不為目標文件,跳到下一個文件進行分析,直至搜索到與該目標文件匹配的文件。上述搜索流程需要對每個文件進行分析和匹配,因此,需要花費較長的時間才能搜索到目標文件,這必然不符合當前嵌入式設備的發(fā)展需求。
發(fā)明內容
本發(fā)明實施例提供了一種應用于嵌入式設備的文件搜索方法及相關裝置,用于提高文件的搜索速度。為解決上述技術問題,本發(fā)明實施例提供以下技術方案一種應用于嵌入式設備的文件搜索方法,包括劃分文件系統(tǒng)的加速點區(qū)間,其中,上述加速點區(qū)間以目錄為邊界;存儲每個加速點的第一參數(shù)值和第二參數(shù)值,其中,上述加速點與上述加速點區(qū)間一一對應并指向上述加速點區(qū)間中的最后一個目錄項,上述第一參數(shù)值指示搜索到上述加速點時累計掃描的目錄數(shù),上述第二參數(shù)值指示搜索到上述加速點時累計掃描的X文件數(shù),上述X指示一種預定的文件類型;獲取目標文件的文件序號,上述目標文件的文件類型為上述X ;判斷是否查找到目標加速點,其中,上述目標加速點滿足如下條件上述目標加速點的第二參數(shù)值小于上述目標文件的文件序號,上述目標加速點的下一個加速點的上述第二參數(shù)值大于上述目標文件的文件序號;當查找到上述目標加速點時,從上述文件系統(tǒng)的首個目錄項開始,采用加速模式搜索上述目標文件,其中,上述采用加速模式搜索上述目標文件包括掃描當前目錄項,判斷當前目錄項為文件還是目錄,若為文件,則讀取下一個目錄項作為當前目錄項,執(zhí)行上述掃描當前目錄項及判斷當前目錄項為文件還是目錄的步驟,若為目錄,則目錄計數(shù)器加1,讀取下一個目錄項作為當前目錄項,執(zhí)行掃描當前目錄項及判斷當前目錄項為文件還是目錄的步驟,直至上述目錄計數(shù)器的值大于或等于上述目標加速點的上述第一參數(shù)值,其中,上述目錄計數(shù)器的初始值為零;當查找不到上述目標加速點,或者上述目錄計數(shù)器的值大于或等于上述目標加速點的上述第一參數(shù)值時,采用普通模式搜索上述目標文件。一種文件搜索裝置,包括初始化單元,用于劃分文件系統(tǒng)的加速點區(qū)間,其中,上述加速點區(qū)間以目錄為邊界;存儲單元,用于存儲每個加速點的第一參數(shù)值和第二參數(shù)值,其中,上述加速點與上述加速點區(qū)間一一對應并指向上述加速點區(qū)間中的最后一個目錄項,上述第一參數(shù)值指示搜索到上述加速點時累計掃描的目錄數(shù),上述第二參數(shù)值指示搜索到上述加速點時累計掃描的X文件數(shù),上述X指示一種預定的文件類型;獲取單元,用于獲取目標文件的文件序號,上述目標文件的文件類型為上述X ;查找判斷單元,用于判斷是否查找到目標加速點,其中,上述目標加速點滿足如下條件上述目標加速點的第二參數(shù)值小于上述目標文件的文件序號,上述目標加速點的下一個加速點的上述第二參數(shù)值大于上述目標文件的文件序號;加速模式搜索單元,用于當上述查找判斷單元的判斷結果為是時,從上述文件系統(tǒng)的首個目錄項開始,采用加速模式搜索上述目標文件;普通模式搜索單元,用于當上述查找判斷單元的判斷結果為否時,或者,當上述目錄計數(shù)器的值大于或等于上述目標加速點的上述第一參數(shù)值時,采用普通模式搜索上述目標文件;其中,上述加速搜索單元包括第一掃描單元,用于掃描當前目錄項;判斷單元,用于判斷當前目錄項為文件還是目錄;讀取單元,用于當上述判斷單元判斷出當前目錄項為文件時,讀取下一個目錄項作為當前目錄項;計數(shù)單元,用于當上述判斷單元判斷出當前目錄項為目錄時,將目錄計數(shù)器的當前值加1,其中,上述述目錄計數(shù)器的初始值為零;上述讀取單元還用于當上述目錄計數(shù)器的值小于上述目標加速點的上述第一參數(shù)值時,讀取下一個目錄項作為當前目錄項。由上可見,本發(fā)明實施中通過對文件系統(tǒng)進行初始化,即劃分文件系統(tǒng)的加速點區(qū)點并存儲每個加速點的第一參數(shù)值和第二參數(shù)值,使得在搜索目標文件的過程中,可利用該加速點的第二參數(shù)值查找到目標加速點后,利用該目標加速點的第一參數(shù)值確定出與該目標文件無關的文件和目錄,直接跳過與該目標文件無關的文件和目錄,避免了搜索過程中對每個目錄項都進行分析和匹配的過程,極大地提高了文件的搜索速度。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例提供的應用于嵌入式設備的文件搜索方法的一個實施例流程示意圖;圖2為本發(fā)明實施例提供的環(huán)形FIFO的一個實施例結構示意圖;圖3為本發(fā)明實施例提供的文件系統(tǒng)分區(qū)的一個實施例結構示意圖;圖4為本發(fā)明實施例提供的應用于嵌入式設備的文件搜索方法的另一個實施例流程示意圖;圖5為本發(fā)明實施例提供的文件搜索裝置的一個實施例結構示意圖。
具體實施例方式本發(fā)明實施例提供了一種應用于嵌入式設備的文件搜索方法。為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點能夠更加的明顯和易懂,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而非全部實施例。下面對本發(fā)明實施例中一種應用于嵌入式設備的文件搜索方法進行描述,請參閱圖1,包括101、劃分文件系統(tǒng)的加速點區(qū)間;在本發(fā)明實施例中,文件搜索裝置在上電啟動時對其所在的嵌入式設備上的文件系統(tǒng)進行初始化,即以目錄為邊界,將上述文件系統(tǒng)劃分為若干個加速點區(qū)間,并為每個加速點區(qū)間設定一個加速點,其中,上述加速點指向加速點區(qū)間中的最后一個目錄項。在本發(fā)明實施例中,文件搜索裝置依據(jù)加速點步長對上述文件系統(tǒng)進行劃分,上述加速點步長可以用于確定一個加速點區(qū)間包含的最小文件數(shù)目,或者,也可以用于確定一個加速點區(qū)間包含的目錄數(shù)目,此處不作限定。上述加速點步長可以是在執(zhí)行上述初始化過程之前,由用戶根據(jù)實際需要來進行設定長,或者,也可以是以預置的方式存儲在該文件搜索裝置中,此處不作限定。當然,文件搜索裝置也可以目錄為邊界,隨機將上述文件系統(tǒng)劃分為若干個加速點區(qū)間,所劃分的各個加速點區(qū)間包含的目錄數(shù)可均不相同。102、存儲每個加速點的第一參數(shù)值和第二參數(shù)值;其中,上述第一參數(shù)值指示搜索到該加速點時累計掃描的目錄數(shù),上述第二參數(shù)值指示搜索到該加速點時累計掃描的X文件數(shù),其中,X指示一種預定的文件類型,可以是音頻文件,視頻文件,或者,也可以是其它文件類型,此處不作限定。103、獲取目標文件的文件序號;上述目標文件的文件序號可以是在調用某個目標文件時,從所在嵌入式設備的本地存儲器獲取,如在音頻播放器的當前曲目播放完需要跳到下一首曲目播放時,或者是在視頻播放器的當前視頻文件播放完需要跳到下一個視頻文件播放時,音頻播放器或視頻播放器必須先通過文件搜索裝置查找出上述下一首曲目或上述下一個視頻文件,此時,文件搜索裝置可根據(jù)當前播放的曲目或視頻文件的從本地存儲器中獲取下一首曲目或下一個視頻文件的文件序號,即目標文件的文件序號。當然,上述目標文件的文件序號也可以是由外部設備或者用戶輸入,此處不作限定。上述目標文件的文件類型為上述X,即若步驟102中的第二參數(shù)值指示的是搜索到該加速點時累計掃描的音頻文件數(shù),則目標文件的文件類型為音頻,若步驟102中的第二參數(shù)值指示的是搜索到該加速點時累計掃描的視頻文件數(shù),則目標文件的文件類型為視頻。104、判斷是否查到目標加速點;文件搜索裝置按照如下條件查找目標加速點上述目標加速點的第二參數(shù)值小于獲取到的目標文件的文件序號,并且,目標加速點的下一個加速點的第二參數(shù)值大于該目標文件的文件序號,若查找到目標加速點,則執(zhí)行步驟105,若查找不到目標加速點,則執(zhí)行步驟106。105、從上述文件系統(tǒng)的首個目錄項開始,采用加速模式搜索上述目標文件;其中,上述加速模式包括的步驟如下Al、掃描當前目錄項。A2、判斷當前目錄項為文件還是目錄;通過掃描當前目錄項,可判斷出當前搜索的目錄項為文件還是目錄,若為文件,則執(zhí)行步驟A3,若為目錄,則執(zhí)行步驟A4。A3、讀取下一個目錄項作為當前目錄項;若當前搜索的目錄項為文件,則不對文件進行任何分析,即不需要讀出該文件的文件名,也不需要讀出該文件的文件類型,直接讀取下一個目錄項,將下一個目錄項作為當前目錄項,執(zhí)行步驟Al。A4、將上述目錄計數(shù)器加1 ;若當前搜索的目錄項為目錄,則目錄計數(shù)器加1,其中,該目錄計數(shù)器的初始值為零。A5、判斷目錄計數(shù)器的值是否小于目標加速點的第一參數(shù)值;將目錄計數(shù)器的值與目標加速點的第一參數(shù)值進行比較,判斷目錄計數(shù)器的值是否小于目標加速點的第一參數(shù)值,若目錄計數(shù)器的值小于目標加速點的第一參數(shù)值,則表示目標文件不存在當前搜索的目錄中,執(zhí)行步驟A3,若目錄計數(shù)器的值大于或等于目標加速點的第一參數(shù)值,則執(zhí)行步驟106。其中,上述目錄計數(shù)器的初始值為零。106、當查找不到目標加速點,或者目錄計數(shù)器的值大于或等于目標加速點的第一參數(shù)值時,采用普通模式搜索目標文件;在本發(fā)明實施例中,若步驟104查找不到目標加速點,則表明該目標文件位于首個加速點區(qū)間中,不需要采用加速模式搜索目標文件,可按照普通流程搜索目標文件,即從文件系統(tǒng)的首個目錄項開始,逐一掃描分析目錄項直至找到目標文件的序號匹配的文件, 如當查找不到目標加速點時,從文件系統(tǒng)的首個目錄項開始對目錄項逐一進行掃描,當掃描到的目錄項為X文件時,將文件計數(shù)器的值加1,直至該文件計數(shù)器的值等于目標文件的文件序號,停止掃描流程,確定最后掃描的目錄項為目標文件,其中,該文件計數(shù)器的初始值為零。在本發(fā)明實施例中,當目錄計數(shù)器的值大于或等于目標加速點的第一參數(shù)值時, 表明后續(xù)搜索的目錄項將可能是目標文件或者包含目標文件,文件搜索裝置從當前目錄項的下一個目錄項開始,采用普通模式搜索目標文件。在本發(fā)明實施例中,當目錄計數(shù)器的值大于或等于目標加速點的第一參數(shù)值時,文件搜索裝置從當前目錄項的下一個目錄項開始對目錄項逐一進行掃描,當掃描到的目錄項為文件時,分析該文件的文件類型,若該文件為 X文件,則將文件計數(shù)器的值加1后讀取下一個目錄項進行分析,直至文件計數(shù)器的值等于目標文件的序號后停止搜索流程,確定出最后搜索的目錄項為目標文件,其中,該文件計數(shù)器的初始值等于目標加速點的第二參數(shù)值。進一步的,本發(fā)明實施例還可利用環(huán)形先入先出隊列(FIFO,F(xiàn)irst Input First Output)結構來緩存搜索目標文件過程中的待掃描的目錄項的首簇地址和目錄層數(shù),由于采用的是環(huán)形FIFO結構,當環(huán)形FIFO結構的總的FIFO項大小達到FIFO的深度時,可通過替換之前的FIFO項內容來緩存新的內容,如圖2所示的環(huán)形FIFO結構示意圖,該環(huán)形 FIFO結構以順時針方向,通過新增FIFO項來存儲待掃描的目錄項的首簇地址和目錄層數(shù), 其中,第η個FIFO項為該環(huán)形FIFO結構的最大FIFO項,當?shù)讦莻€FIFO項被利用后,通過替換第0個FIFO項的內容來緩存新的內容,以此實現(xiàn)FIFO項的循環(huán)利用,最大限度地節(jié)省嵌入式設備的隨機存取存儲器(RAM,RAM-random access memory)空間。由上可見,本發(fā)明實施中通過對文件系統(tǒng)進行初始化,即劃分文件系統(tǒng)的加速點區(qū)點并存儲每個加速點的第一參數(shù)值和第二參數(shù)值,使得在搜索目標文件的過程中,可利用該加速點的第二參數(shù)值查找到目標加速點后,利用該目標加速點的第一參數(shù)值確定出與該目標文件無關的文件和目錄,直接跳過與該目標文件無關的文件和目錄,避免了搜索過程中對每個目錄項都進行分析和匹配的過程,極大地提高了文件的搜索速度。下面以搜索音頻文件為例,以一具體應用場景對本發(fā)明實施例中的文件搜索方法進行描述。如圖3所示,將文件系統(tǒng)作為一個單列的線性表,每個行都是一個目錄項 DirEntry,掃描文件系統(tǒng)的過程就是使指針banner Pointer從表頭開始向下移動移動,分析每行的目錄項,記下掃描的目錄總數(shù)和音頻文件總數(shù)。假設設定的加速點步長為200,即確定一個加速點區(qū)間中至少包含200個文件。文件搜索裝置根據(jù)設定的加速點步長,對文件系統(tǒng)進行初始化,即在掃描總音頻文件時以目錄為邊界,每隔至少200個文件處定義為一個加速點(如圖3中的 Accelerator [1]、Accelerator [2]禾口 Accelerator [3]),將文件系統(tǒng)劃分了 多個力口速點區(qū)間,如圖3中的目錄項DirEntry NUDirEntry N2和DirEntry N3均為目錄,且加速點的0 區(qū)間、1區(qū)間和2區(qū)間均包含至少200個文件。每個加速點區(qū)間如下兩個參數(shù)WOkanDirNum 當前掃描過的目錄數(shù)。w2FsScanTotalCnt 當前掃描過的音頻文件數(shù)。文件搜索流程如圖4所示Si、獲取目標文件序號w2FindFileIdx。S2、判斷是否查找到目標加速點Acceleratorti];查找Accelerator [i]的方法如下
權利要求
1.一種應用于嵌入式設備的文件搜索方法,其特征在于,包括劃分文件系統(tǒng)的加速點區(qū)間,其中,所述加速點區(qū)間以目錄為邊界; 存儲每個加速點的第一參數(shù)值和第二參數(shù)值,其中,所述加速點與所述加速點區(qū)間一一對應并指向所述加速點區(qū)間中的最后一個目錄項,所述第一參數(shù)值指示搜索到所述加速點時累計掃描的目錄數(shù),所述第二參數(shù)值指示搜索到所述加速點時累計掃描的X文件數(shù),所述X指示一種預定的文件類型;獲取目標文件的文件序號,所述目標文件的文件類型為所述X ; 判斷是否查找到目標加速點,其中,所述目標加速點滿足如下條件所述目標加速點的第二參數(shù)值小于所述目標文件的文件序號,所述目標加速點的下一個加速點的所述第二參數(shù)值大于所述目標文件的文件序號;當查找到所述目標加速點時,從所述文件系統(tǒng)的首個目錄項開始,采用加速模式搜索所述目標文件,其中,所述采用加速模式搜索所述目標文件包括 掃描當前目錄項,判斷當前目錄項為文件還是目錄,若為文件,則讀取下一個目錄項作為當前目錄項,執(zhí)行所述掃描當前目錄項及判斷當前目錄項為文件還是目錄的步驟,若為目錄,則目錄計數(shù)器加1,讀取下一個目錄項作為當前目錄項,執(zhí)行掃描當前目錄項及判斷當前目錄項為文件還是目錄的步驟,直至所述目錄計數(shù)器的值大于或等于所述目標加速點的所述第一參數(shù)值,其中,所述目錄計數(shù)器的初始值為零;當查找不到所述目標加速點,或者所述目錄計數(shù)器的值大于或等于所述目標加速點的所述第一參數(shù)值時,采用普通模式搜索所述目標文件。
2.根據(jù)權利要求1所述的方法,其特征在于,當所述目錄計數(shù)器的值大于或等于所述目標加速點的所述第一參數(shù)值時,所述采用普通模式搜索所述目標文件包括從當前目錄項的下一個目錄項開始對目錄項逐一進行掃描;當掃描到的目錄項為X文件時,將所述文件計數(shù)器的值加1,其中,所述文件計數(shù)器的初始值等于所述目標加速點的所述第二參數(shù)值;當所述文件計數(shù)器的值等于所述目標文件的文件序號,則停止掃描流程,確定最后掃描的目錄項為目標文件。
3.根據(jù)權利要求1所述的方法,其特征在于,當查找不到所述目標加速點時,所述采用普通模式搜索所述目標文件包括從所述文件系統(tǒng)的首個目錄項開始對目錄項逐一進行掃描;當掃描到的目錄項為X文件時,將所述文件計數(shù)器的值加1,其中,所述文件計數(shù)器的初始值為零;當所述文件計數(shù)器的值等于所述目標文件的文件序號,則停止掃描流程,確定最后掃描的目錄項為目標文件。
4.根據(jù)權利要求1至3任一項所述的方法,其特征在于, 所述劃分文件系統(tǒng)的加速點區(qū)間包括根據(jù)設定的加速點步長劃分文件系統(tǒng)的加速點區(qū)間,其中,所述加速點步長用于確定一個加速點區(qū)間包含的最小文件數(shù)目。
5.根據(jù)權利要求1至3任一項所述的方法,其特征在于, 所述X為音頻類型。
6.根據(jù)權利要求1至3任一項所述的方法,其特征在于,利用環(huán)形先入先出隊列FIFO結構緩存搜索所述目標文件過程中待掃描的目錄項的首簇地址和目錄層數(shù)。
7.一種文件搜索裝置,其特征在于,包括初始化單元,用于劃分文件系統(tǒng)的加速點區(qū)間,其中,所述加速點區(qū)間以目錄為邊界; 存儲單元,用于存儲每個加速點的第一參數(shù)值和第二參數(shù)值,其中,所述加速點與所述加速點區(qū)間一一對應并指向所述加速點區(qū)間中的最后一個目錄項,所述第一參數(shù)值指示搜索到所述加速點時累計掃描的目錄數(shù),所述第二參數(shù)值指示搜索到所述加速點時累計掃描的X文件數(shù),所述X指示一種預定的文件類型;獲取單元,用于獲取目標文件的文件序號,所述目標文件的文件類型為所述X ; 查找判斷單元,用于判斷是否查找到目標加速點,其中,所述目標加速點滿足如下條件所述目標加速點的第二參數(shù)值小于所述目標文件的文件序號,所述目標加速點的下一個加速點的所述第二參數(shù)值大于所述目標文件的文件序號;加速模式搜索單元,用于當所述查找判斷單元的判斷結果為是時,從所述文件系統(tǒng)的首個目錄項開始,采用加速模式搜索所述目標文件;普通模式搜索單元,用于當所述查找判斷單元的判斷結果為否時,或者,當所述目錄計數(shù)器的值大于或等于所述目標加速點的所述第一參數(shù)值時,采用普通模式搜索所述目標文件;其中,所述加速搜索單元包括 第一掃描單元,用于掃描當前目錄項; 判斷單元,用于判斷當前目錄項為文件還是目錄;讀取單元,用于當所述判斷單元判斷出當前目錄項為文件時,讀取下一個目錄項作為當前目錄項;計數(shù)單元,用于當所述判斷單元判斷出當前目錄項為目錄時,將目錄計數(shù)器的當前值加1,其中,所述述目錄計數(shù)器的初始值為零;所述讀取單元還用于當所述目錄計數(shù)器的值小于所述目標加速點的所述第一參數(shù)值時,讀取下一個目錄項作為當前目錄項。
8.根據(jù)權利要求7所述的裝置,其特征在于, 所述普通模式搜索單元包括第二掃描單元,用于當所述目錄計數(shù)器的值大于或等于所述目標加速點的所述第一參數(shù)值時,從當前目錄項的下一個目錄項開始對目錄項逐一進行掃描;置數(shù)單元,用于當掃描到的目錄項為X文件時,將所述文件計數(shù)器的值加1,其中,所述文件計數(shù)器的初始值等于所述目標加速點的所述第二參數(shù)值;終止確定單元,用于當所述文件計數(shù)器的值等于所述目標文件的文件序號時,停止掃描流程,確定所述掃描單元最后掃描的目錄項為目標文件。
9.根據(jù)權利要求7所述的裝置,其特征在于, 所述普通模式搜索單元包括第二掃描單元,用于當查找不到所述目標加速點時,從所述文件系統(tǒng)的首個目錄項開始對目錄項逐一進行掃描;置數(shù)單元,用于當掃描到的目錄項為X文件時,將所述文件計數(shù)器的值加1,其中,所述文件計數(shù)器的初始值為零;終止確定單元,用于當所述文件計數(shù)器的值等于所述目標文件的文件序號時,停止掃描流程,確定所述掃描單元最后掃描的目錄項為目標文件。
10.根據(jù)權利要求7至9任一項所述的裝置,其特征在于,所述初始化單元具體用于根據(jù)設定的加速點步長劃分文件系統(tǒng)的加速點區(qū)間,其中, 所述加速點步長用于確定一個加速點區(qū)間包含的最小文件數(shù)目。
11.根據(jù)權利要求7至9任一項所述的裝置,其特征在于, 所述裝置還包括環(huán)形FIFO單元,用于利用環(huán)形先入先出隊列FIFO結構緩存搜索所述目標文件過程中待掃描的目錄項的首簇地址和目錄層數(shù)。
全文摘要
本發(fā)明實施例公開了一種應用于嵌入式設備的文件搜索方法相關裝置,其中,一種應用于嵌入式設備的文件搜索方法包括將文件系統(tǒng)劃分為多個加速點區(qū)點,存儲每個加速點的第一參數(shù)值和第二參數(shù)值,利用該加速點的第二參數(shù)值查找目標加速點,在查找到目標加速點后利用該目標加速點的第一參數(shù)值確定出與該目標文件無關的文件和目錄,直接跳過與該目標文件無關的文件和目錄。本發(fā)明實施例提供的技術方案有效避免了搜索過程中對每個目錄項都進行分析和匹配的過程,極大地提高了文件的搜索速度。
文檔編號G06F17/30GK102360361SQ20111029791
公開日2012年2月22日 申請日期2011年9月29日 優(yōu)先權日2011年9月29日
發(fā)明者王學軍 申請人:深圳芯邦科技股份有限公司