本發(fā)明涉及計(jì)算處理領(lǐng)域,具體而言,涉及一種文件處理方法、裝置和文件系統(tǒng)。
背景技術(shù):
目前,在用戶上傳圖片或視頻文件時(shí)或?qū)⑷我馕募麓鎯?chǔ)至網(wǎng)盤(pán)中時(shí),后臺(tái)服務(wù)器需要根據(jù)該文件名寫(xiě)入新的文件或?qū)σ呀?jīng)存在的文件進(jìn)行更新。比如:在網(wǎng)盤(pán)中上傳一個(gè)新的文件,或?qū)σ呀?jīng)存在的文件進(jìn)行讀取或者修改或者刪除等。
當(dāng)用戶上傳圖片或視頻文件時(shí),服務(wù)器根據(jù)該文件名將文件內(nèi)容寫(xiě)入存儲(chǔ)服務(wù)器;或者根據(jù)用戶上傳時(shí)間等生成具有時(shí)間戳的文件名,并將文件內(nèi)容寫(xiě)入存儲(chǔ)服務(wù)器。
當(dāng)用戶讀取或者更新已經(jīng)存儲(chǔ)至網(wǎng)盤(pán)的文件時(shí),服務(wù)器通過(guò)用戶輸入的文件名在后臺(tái)的文件目錄中進(jìn)行搜索來(lái)找到目標(biāo)文件并進(jìn)行處理。當(dāng)文件數(shù)量越來(lái)越多時(shí),服務(wù)器的搜索時(shí)間會(huì)越來(lái)越長(zhǎng),從而整個(gè)文件處理的時(shí)間也會(huì)變長(zhǎng),當(dāng)許多用戶同時(shí)進(jìn)行處理時(shí),這種弊端會(huì)愈發(fā)明顯,延長(zhǎng)了每個(gè)用戶的處理時(shí)間,這嚴(yán)重影響了用戶的體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種文件處理方法、裝置和文件系統(tǒng),使網(wǎng)盤(pán)的服務(wù)器在監(jiān)測(cè)到用戶上傳圖片或視頻文件時(shí)時(shí),快速的對(duì)用戶的上傳的圖片或視頻文件進(jìn)行處理,縮短網(wǎng)盤(pán)的服務(wù)器處理文件的時(shí)間。
使用文件搜索引擎搜索待訪問(wèn)文件時(shí),文件搜索引擎可以很快的向用戶反饋文件的搜索結(jié)果。
第一方面,本發(fā)明實(shí)施例提供了一種文件處理方法,所述方法包括:
獲取用戶輸入的文件標(biāo)識(shí);
根據(jù)所述文件標(biāo)識(shí)、各索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量和所述索引分組的起始文件標(biāo)識(shí),計(jì)算所述文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí);所述索引分組包括多個(gè)索引文件,每個(gè)所述索引文件用于存儲(chǔ)預(yù)設(shè)數(shù)量的所述文件信息的存儲(chǔ)地址;
根據(jù)單位索引文件存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,計(jì)算所述文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí);
根據(jù)得到所述索引文件的標(biāo)識(shí),在所述索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取所述文件標(biāo)識(shí)對(duì)應(yīng)的所述文件信息存儲(chǔ)地址;
根據(jù)獲取到的所述文件信息存儲(chǔ)地址,讀取存儲(chǔ)的文件信息,并對(duì)讀取的所述文件信息進(jìn)行處理。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一方面的第一種可能的實(shí)施方式,其中,根據(jù)所述文件標(biāo)識(shí)、各索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量和所述索引分組的起始文件標(biāo)識(shí),計(jì)算所述文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí)包括:
通過(guò)獲取到的所述文件標(biāo)識(shí)減去所述索引分組的起始文件標(biāo)識(shí),得到索引分組標(biāo)識(shí)中間計(jì)算結(jié)果;
判斷所述索引分組標(biāo)識(shí)中間計(jì)算結(jié)果和所述索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量的大?。?/p>
若確定所述索引分組標(biāo)識(shí)中間計(jì)算結(jié)果小于所述索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,則獲取相應(yīng)索引分組的標(biāo)識(shí),將獲取到的索引分組的標(biāo)識(shí)作為所述文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí)。
結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一方面的第二種可能的實(shí)施方式,其中,所述根據(jù)單位索引文件存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,計(jì)算所述文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí)包括:
通過(guò)所述索引分組標(biāo)識(shí)中間計(jì)算結(jié)果除以單位索引文件存儲(chǔ)文件信息存儲(chǔ)地址數(shù)量,得到索引文件標(biāo)識(shí)中間計(jì)算結(jié)果;
對(duì)得到的所述索引文件標(biāo)識(shí)中間計(jì)算結(jié)果向下取整,得到所述文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí)。
結(jié)合第一方面以及上述第一方面的第一種和第二種可能的實(shí)現(xiàn)方式,本發(fā)明實(shí)施例提供了第一方面的第三種可能的實(shí)施方式,其中,所述根據(jù)得到所述索引文件的標(biāo)識(shí),在所述索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取所述文件標(biāo)識(shí)對(duì)應(yīng)的所述文件信息存儲(chǔ)地址包括:
通過(guò)所述索引分組標(biāo)識(shí)中間計(jì)算結(jié)果減去所述索引文件標(biāo)識(shí)和所述單位索引文件存儲(chǔ)文件信息數(shù)量的乘積,確定所述文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址在所述索引文件中的存儲(chǔ)位置;
根據(jù)確定的文件信息存儲(chǔ)地址在所述索引文件中的存儲(chǔ)位置,獲取所述文件標(biāo)識(shí)對(duì)應(yīng)的所述文件信息存儲(chǔ)地址;
或者,
通過(guò)所述文件標(biāo)識(shí)減去所述索引文件的起始文件標(biāo)識(shí),確定所述文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址在所述索引文件中的存儲(chǔ)位置;
根據(jù)確定的文件信息存儲(chǔ)地址在所述索引文件中的存儲(chǔ)位置,獲取所述文件標(biāo)識(shí)對(duì)應(yīng)的所述文件信息存儲(chǔ)地址;
或者,
通過(guò)所述文件標(biāo)識(shí),查詢所述索引文件中所述文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;
獲取查詢到所述文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址。
第二方面,本發(fā)明實(shí)施例提供了一種文件處理裝置,所述裝置包括:
文件標(biāo)識(shí)獲取模塊,用于獲取用戶輸入的文件標(biāo)識(shí);
第一計(jì)算模塊,用于根據(jù)所述文件標(biāo)識(shí)、各索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量和所述索引分組的起始文件標(biāo)識(shí),計(jì)算所述文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí);所述索引分組包括多個(gè)索引文件,每個(gè)所述索引文件用于存儲(chǔ)預(yù)設(shè)數(shù)量的所述文件信息的存儲(chǔ)地址;
第二計(jì)算模塊,用于根據(jù)單位索引文件存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,計(jì)算所述文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí);
文件信息存儲(chǔ)地址獲取模塊,用于根據(jù)得到所述索引文件的標(biāo)識(shí),在所述索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取所述文件標(biāo)識(shí)對(duì)應(yīng)的所述文件信息存儲(chǔ)地址;
處理模塊,用于根據(jù)獲取到的所述文件信息存儲(chǔ)地址,讀取存儲(chǔ)的文件信息,并對(duì)讀取的所述文件信息進(jìn)行處理。
結(jié)合第二方面,本發(fā)明實(shí)施例提供了第二方面的第一種可能的實(shí)施方式,其中,所述第一計(jì)算模塊包括:
第一計(jì)算單元,用于通過(guò)獲取到的所述文件標(biāo)識(shí)減去所述索引分組的起始文件標(biāo)識(shí),得到索引分組標(biāo)識(shí)中間計(jì)算結(jié)果;
第二計(jì)算單元,用于判斷所述索引分組標(biāo)識(shí)中間計(jì)算結(jié)果和所述索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量的大??;
索引分組標(biāo)識(shí)確定單元,用于若確定所述索引分組標(biāo)識(shí)中間計(jì)算結(jié)果小于所述索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,則獲取相應(yīng)索引分組的標(biāo)識(shí),將獲取到的索引分組的標(biāo)識(shí)作為所述文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí)。
結(jié)合第二方面,本發(fā)明實(shí)施例提供了第二方面的第二種可能的實(shí)施方式,其中,所述第二計(jì)算模塊包括:
第三計(jì)算單元,用于
通過(guò)所述索引分組標(biāo)識(shí)中間計(jì)算結(jié)果除以單位索引文件存儲(chǔ)文件信息存儲(chǔ)地址數(shù)量,得到索引文件標(biāo)識(shí)中間計(jì)算結(jié)果;
第四計(jì)算單元,用于對(duì)得到的所述索引文件標(biāo)識(shí)中間計(jì)算結(jié)果向下取整,得到所述文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí)。
結(jié)合第二方面以及上述第二方面的第一種和第二種可能的實(shí)現(xiàn)方式,本發(fā)明實(shí)施例提供了第二方面的第三種可能的實(shí)施方式,其中,所述文件信息存儲(chǔ)地址獲取模塊包括:
第五計(jì)算單元,用于通過(guò)所述索引分組標(biāo)識(shí)中間計(jì)算結(jié)果減去所述索引文件標(biāo)識(shí)和所述單位索引文件存儲(chǔ)文件信息數(shù)量的乘積,確定所述文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址在所述索引文件中的存儲(chǔ)位置;
第一獲取單元,用于根據(jù)確定的文件信息存儲(chǔ)地址在所述索引文件中的存儲(chǔ)位置,獲取所述文件標(biāo)識(shí)對(duì)應(yīng)的所述文件信息存儲(chǔ)地址;
或者,
第六計(jì)算單元,用于通過(guò)所述文件標(biāo)識(shí)減去所述索引文件的起始文件標(biāo)識(shí),確定所述文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址在所述索引文件中的存儲(chǔ)位置;
第二獲取單元,用于根據(jù)確定的文件信息存儲(chǔ)地址在所述索引文件中的存儲(chǔ)位置,獲取所述文件標(biāo)識(shí)對(duì)應(yīng)的所述文件信息存儲(chǔ)地址;
或者,
查詢單元,用于通過(guò)所述文件標(biāo)識(shí),查詢所述索引文件中所述文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;
第三獲取單元,用于獲取查詢到所述文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址。
第三方面,本發(fā)明實(shí)施例提供了一種文件處理裝置,所述裝置包括:
處理器、存儲(chǔ)器和總線,所述處理器、和存儲(chǔ)器通過(guò)所述總線連接;
所述存儲(chǔ)器用于存儲(chǔ)可執(zhí)行程序;
所述處理器,用于通過(guò)所述總線調(diào)用存儲(chǔ)在所述存儲(chǔ)器中的可執(zhí)行程序,執(zhí)行上述第一方面提出的文件處理方法。
第四方面,本發(fā)明實(shí)施例提供了一種文件系統(tǒng),包括第三方面提出的文件處理裝置。
本發(fā)明實(shí)施例提供的一種文件處理方法、裝置和文件系統(tǒng),通過(guò)對(duì)獲取到的文件標(biāo)識(shí)和各索引分組中存儲(chǔ)的文件信息數(shù)量和索引分組的起始文件標(biāo)識(shí)進(jìn)行計(jì)算,得到文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí),然后對(duì)文件標(biāo)識(shí)、索引分組的標(biāo)識(shí)和單位索引文件存儲(chǔ)的文件信息數(shù)量進(jìn)行計(jì)算,得到文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí),在索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址,通過(guò)對(duì)用戶輸入的文件標(biāo)識(shí)進(jìn)行簡(jiǎn)單的計(jì)算,就可以找到用戶文件信息的存儲(chǔ)地址,從而只需要很短的時(shí)間,就可以對(duì)用戶上傳的圖片或者視頻進(jìn)行處理,縮短網(wǎng)盤(pán)的服務(wù)器的文件處理時(shí)間,提高了用戶使用網(wǎng)盤(pán)的體驗(yàn)。
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附附圖,作詳細(xì)說(shuō)明如下。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對(duì)范圍的限定,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1示出了本發(fā)明實(shí)施例提供的文件處理方法所涉及的一種實(shí)施環(huán)境的結(jié)構(gòu)示意圖;
圖2示出了本發(fā)明實(shí)施例1所提供的一種文件處理方法流程圖;
圖3示出了本發(fā)明實(shí)施例2所提供的一種文件處理方法流程圖;
圖4示出了本發(fā)明實(shí)施例3所提供的一種文件處理裝置的結(jié)構(gòu)示意圖;
圖5示出了本發(fā)明實(shí)施例3所提供的另一種文件處理裝置的結(jié)構(gòu)示意圖;
圖6示出了本發(fā)明實(shí)施例4所提供的一種文件處理裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來(lái)布置和設(shè)計(jì)。因此,以下對(duì)在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例。基于本發(fā)明的實(shí)施例,本領(lǐng)域技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
考慮到相關(guān)技術(shù)中,在現(xiàn)有的服務(wù)器處理文件的過(guò)程中,當(dāng)用戶讀取或者更新已經(jīng)存儲(chǔ)至網(wǎng)盤(pán)的文件時(shí),服務(wù)器通過(guò)用戶輸入的文件名在后臺(tái)的文件目錄中進(jìn)行搜索來(lái)找到目標(biāo)文件并進(jìn)行處理。當(dāng)文件數(shù)量越來(lái)越多時(shí),服務(wù)器的搜索時(shí)間會(huì)越來(lái)越長(zhǎng),從而整個(gè)文件處理的時(shí)間也會(huì)變長(zhǎng),當(dāng)許多用戶同時(shí)進(jìn)行處理時(shí),這種弊端會(huì)愈發(fā)明顯,延長(zhǎng)了每個(gè)用戶的處理時(shí)間,這嚴(yán)重影響了用戶的體驗(yàn)?;诖?,本發(fā)明實(shí)施例提供了一種文件處理方法、裝置和文件系統(tǒng)。下面通過(guò)實(shí)施例進(jìn)行描述。
參見(jiàn)圖1,其示出了本發(fā)明實(shí)施例提供的文件處理方法所涉及的一種實(shí)施系統(tǒng)的結(jié)構(gòu)示意圖,該系統(tǒng)包括:服務(wù)器10,服務(wù)器10包括:處理單元100和文件系統(tǒng)101。
其中,處理單元100,用于獲取用戶輸入的文件標(biāo)識(shí),然后根據(jù)文件標(biāo)識(shí)、單位索引分組中存儲(chǔ)的文件信息數(shù)量和單位索引文件存儲(chǔ)的文件信息數(shù)量,計(jì)算文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí),然后在索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;并根據(jù)得到的文件信息存儲(chǔ)地址,向文件系統(tǒng)101發(fā)送文件信息讀取指令,將文件信息讀取到處理單元100所在的服務(wù)器的緩存或者內(nèi)存中,然后對(duì)讀取的文件信息進(jìn)行處理。
文件系統(tǒng)101,用于存儲(chǔ)文件信息,每個(gè)文件信息都有一個(gè)對(duì)應(yīng)的文件標(biāo)識(shí),在獲取到處理單元100發(fā)送的文件信息讀取指令時(shí),允許處理單元100對(duì)與文件標(biāo)識(shí)對(duì)應(yīng)的文件信息進(jìn)行讀取。
其中,處理單元100和文件系統(tǒng)101可以位于一個(gè)服務(wù)器中,也可以位于不同的服務(wù)器中。其中,處理單元100可以是CPU、NP(Network Processor,網(wǎng)絡(luò)處理器)等任意可以進(jìn)行計(jì)算處理的裝置,這里不再一一贅述。
實(shí)施例1
參見(jiàn)圖2,本實(shí)施例提供了一種文件處理方法,該方法用于服務(wù)器所包含的處理單元,包括以下步驟:
步驟200、獲取用戶輸入的文件標(biāo)識(shí)。
其中,用戶輸入的文件標(biāo)識(shí),是用戶在更新存儲(chǔ)于云服務(wù)中的文件時(shí),使用的服務(wù)器預(yù)先為用戶分配的文件標(biāo)識(shí)。
其中,用戶在上傳圖片、視頻等文件到云服務(wù)時(shí),服務(wù)器向用戶分配文件標(biāo)識(shí),使得用戶可以通過(guò)所分配的文件標(biāo)識(shí)來(lái)對(duì)已經(jīng)存儲(chǔ)的文件進(jìn)行處理。
步驟201、根據(jù)文件標(biāo)識(shí)、各索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量和索引分組的起始文件標(biāo)識(shí),計(jì)算文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí);索引分組包括多個(gè)索引文件,每個(gè)索引文件用于存儲(chǔ)預(yù)設(shè)數(shù)量的文件信息的存儲(chǔ)地址。
其中,每個(gè)索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,表示的是每個(gè)索引分組所能存儲(chǔ)的文件信息存儲(chǔ)地址的最大數(shù)目,每個(gè)索 引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量都記錄在服務(wù)器預(yù)先存儲(chǔ)的文件系統(tǒng)信息中。
步驟202、根據(jù)單位索引文件存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,計(jì)算文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí)。
其中,單位索引文件存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,表示的是每個(gè)索引文件所能存儲(chǔ)的文件信息存儲(chǔ)地址的最大數(shù)目,記錄在服務(wù)器預(yù)先存儲(chǔ)的文件系統(tǒng)信息中。
步驟203、根據(jù)得到索引文件的標(biāo)識(shí),在索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址。
其中,文件信息存儲(chǔ)地址,包括文件信息在存儲(chǔ)器中的起始存儲(chǔ)位置和終止存儲(chǔ)位置。
步驟204、根據(jù)獲取到的文件信息存儲(chǔ)地址,讀取存儲(chǔ)的文件信息,并對(duì)讀取的文件信息進(jìn)行處理。
其中,根據(jù)得到的文件信息存儲(chǔ)地址,計(jì)算單元向文件系統(tǒng)發(fā)送文件信息讀取指令,將文件信息讀取到處理單元所在的服務(wù)器的緩存或者內(nèi)存中,然后對(duì)讀取的文件信息進(jìn)行處理。
基于以上描述,本實(shí)施例提供的一種文件處理方法,通過(guò)對(duì)獲取到的文件標(biāo)識(shí)和各索引分組中存儲(chǔ)的文件信息數(shù)量和索引分組的起始文件標(biāo)識(shí)進(jìn)行計(jì)算,得到文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí),然后對(duì)文件標(biāo)識(shí)、索引分組的標(biāo)識(shí)和單位索引文件存儲(chǔ)的文件信息數(shù)量進(jìn)行計(jì)算,得到文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí),在索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址,通過(guò)對(duì)用戶輸入的文件標(biāo)識(shí)進(jìn)行簡(jiǎn)單的計(jì)算,就可以找到用戶文件信息的存儲(chǔ)地址,從而只需要很短的時(shí)間,就可以對(duì)用戶上傳的圖片或者視頻進(jìn)行處理,縮短網(wǎng)盤(pán)的服務(wù)器的文件處理時(shí)間,提高了用戶使用網(wǎng)盤(pán)的體驗(yàn)。
其中,根據(jù)文件標(biāo)識(shí)和單位索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,計(jì)算文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí)包括:
通過(guò)獲取到的文件標(biāo)識(shí)減去索引分組的起始文件標(biāo)識(shí),得到索引分組標(biāo)識(shí)中間計(jì)算結(jié)果;
判斷索引分組標(biāo)識(shí)中間計(jì)算結(jié)果和索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量的大小;
若確定索引分組標(biāo)識(shí)中間計(jì)算結(jié)果小于索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,則獲取相應(yīng)索引分組的標(biāo)識(shí),將獲取到的索引分組的標(biāo)識(shí)作為文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí)。
比如,設(shè)文件系統(tǒng)中存在3個(gè)索引分組,標(biāo)識(shí)為0的索引分組的起始文件標(biāo)識(shí)為0并且可以存儲(chǔ)2000個(gè)文件信息存儲(chǔ)地址,標(biāo)識(shí)為1的索引分組的起始文件標(biāo)識(shí)為2000并且可以存儲(chǔ)3000個(gè)文件信息存儲(chǔ)地址,標(biāo)識(shí)為2的索引分組的起始文件標(biāo)識(shí)為5000并且可以存儲(chǔ)4000個(gè)文件信息存儲(chǔ)地址。設(shè)計(jì)算單元獲取到的文件標(biāo)識(shí)是2201,計(jì)算單元將文件標(biāo)識(shí)2201減去標(biāo)識(shí)為0的索引分組的起始文件標(biāo)識(shí)0,得到中間計(jì)算結(jié)果是2201,然后判斷2201大于該索引分組的可以存儲(chǔ)的文件信息存儲(chǔ)地址的數(shù)量2000,所以標(biāo)識(shí)為0的索引分組中不包含文件標(biāo)識(shí)為2201的文件信息存儲(chǔ)地址;然后計(jì)算單元將文件標(biāo)識(shí)2201減去標(biāo)識(shí)為1的索引分組的起始文件標(biāo)識(shí)2000,得到索引分組標(biāo)識(shí)中間計(jì)算結(jié)果201,然后判斷索引分組標(biāo)識(shí)中間計(jì)算結(jié)果201小于該索引分組可以存儲(chǔ)的文件信息存儲(chǔ)地址的數(shù)量3000后,確定文件標(biāo)識(shí)為2201對(duì)應(yīng)的文件信息存儲(chǔ)地址在標(biāo)識(shí)為1的索引分組內(nèi)。
其中,根據(jù)單位索引文件存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,計(jì)算文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí)包括:
通過(guò)索引分組標(biāo)識(shí)中間計(jì)算結(jié)果除以單位索引文件存儲(chǔ)文件信息存儲(chǔ)地址數(shù)量,得到索引文件標(biāo)識(shí)中間計(jì)算結(jié)果;
對(duì)得到的索引文件標(biāo)識(shí)中間計(jì)算結(jié)果向下取整,得到文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí)。
其中,索引分組標(biāo)識(shí)中間計(jì)算結(jié)果,用于指示文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址所在的索引分組。通過(guò)得到的索引分組標(biāo)識(shí)中間計(jì)算結(jié)果,處理單元可以進(jìn)一步的計(jì)算,得到文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí)。
其中,索引文件包括預(yù)設(shè)數(shù)量的文件標(biāo)識(shí)和對(duì)應(yīng)文件信息存儲(chǔ)地址的對(duì)應(yīng)關(guān)系。
其中,當(dāng)服務(wù)器獲得用戶上傳的文件后,就會(huì)在索引文件中分配文件信息的存儲(chǔ)地址,并根據(jù)該文件信息的存儲(chǔ)地址將文件存儲(chǔ)在服務(wù)器的存儲(chǔ)器中。其中,索引文件標(biāo)識(shí)中間計(jì)算結(jié)果一般是一個(gè)包含整數(shù)部分和小數(shù)部分的數(shù)字,比如:2.2、0.4等,通過(guò)這個(gè) 數(shù)字是不能確定文件標(biāo)識(shí)所在的索引文件標(biāo)識(shí)的,所以在得到索引文件標(biāo)識(shí)中間計(jì)算結(jié)果后,需要對(duì)索引文件標(biāo)識(shí)中間計(jì)算結(jié)果進(jìn)行向下取整計(jì)算,從而得到文件標(biāo)識(shí)所在的索引文件的標(biāo)識(shí)。
其中,向下取整計(jì)算,就是去掉數(shù)字中的小數(shù)部分,保留數(shù)字中的整數(shù)部分作為計(jì)算結(jié)果。
比如:數(shù)字2.2向下取整后,得到的向下取整的結(jié)果是數(shù)字2,而得到的數(shù)字2就是文件標(biāo)識(shí)所在的索引文件的標(biāo)識(shí)。
其中,根據(jù)得到索引文件的標(biāo)識(shí),在索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址包括:
通過(guò)索引分組標(biāo)識(shí)中間計(jì)算結(jié)果減去索引文件標(biāo)識(shí)和單位索引文件存儲(chǔ)文件信息數(shù)量的乘積,確定文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置;
根據(jù)確定的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置,獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;
或者,
通過(guò)文件標(biāo)識(shí)減去索引文件的起始文件標(biāo)識(shí),確定文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置;
根據(jù)確定的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置,獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;
或者,
通過(guò)文件標(biāo)識(shí),查詢索引文件中文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;
獲取查詢到文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址。
在得到文件標(biāo)識(shí)所在的索引文件的標(biāo)識(shí)后,由于索引文件中存儲(chǔ)的文件信息存儲(chǔ)地址的數(shù)量是有限的,通常也就是幾百個(gè),因此不論處理單元是通過(guò)計(jì)算的方式,還是查詢的方式,都可以很快速的找到文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址,達(dá)到快速處理文件信息的目的。
實(shí)施例2
參見(jiàn)圖3,本發(fā)明實(shí)施例提供了一種文件處理方法,該方法用于服務(wù)器所包含的處理單元,包括以下步驟:
步驟300、獲取用戶輸入的文件標(biāo)識(shí)。
其中,用戶輸入的文件標(biāo)識(shí),是用戶在更新存儲(chǔ)于云服務(wù)中的文件時(shí),使用的服務(wù)器預(yù)先為用戶分配的文件標(biāo)識(shí)。
其中,用戶在上傳圖片、視頻等文件到云服務(wù)時(shí),服務(wù)器向用戶分配文件標(biāo)識(shí),使得用戶可以通過(guò)所分配的文件標(biāo)識(shí)來(lái)對(duì)已經(jīng)存儲(chǔ)的文件進(jìn)行處理。
比如,預(yù)設(shè)某個(gè)用戶上傳視頻文件到云服務(wù)中,服務(wù)器為該視頻文件分配的文件標(biāo)識(shí)是2201,當(dāng)用戶通過(guò)文件標(biāo)識(shí)2201觀看視頻時(shí),服務(wù)器就會(huì)獲取到用戶輸入的文件標(biāo)識(shí)。
其中,服務(wù)器生成文件標(biāo)識(shí)的過(guò)程如下:
當(dāng)服務(wù)器獲得用戶新建文件的請(qǐng)求時(shí),將文件信息寫(xiě)入服務(wù)器的存儲(chǔ)器中,并獲得文件信息的存儲(chǔ)地址,將文件信息的存儲(chǔ)地址寫(xiě)入索引文件中,根據(jù)索引文件中已經(jīng)記錄的文件信息存儲(chǔ)地址的個(gè)數(shù),加上索引文件的標(biāo)識(shí)和索引文件可以存儲(chǔ)的文件信息存儲(chǔ)地址的預(yù)設(shè)數(shù)量的乘積,得到索引分組內(nèi)的文件標(biāo)識(shí),然后將索引分組內(nèi)的文件標(biāo)識(shí)加上索引分組的起始文件標(biāo)識(shí),就會(huì)獲得到返回給用戶的文件標(biāo)識(shí)。
步驟301、通過(guò)獲取到的文件標(biāo)識(shí)減去索引分組的起始文件標(biāo)識(shí),得到索引分組標(biāo)識(shí)中間計(jì)算結(jié)果。
其中,索引分組的起始文件標(biāo)識(shí)是索引分組中存儲(chǔ)的第一個(gè)文件信息存儲(chǔ)地址對(duì)應(yīng)的文件標(biāo)識(shí)。
比如:設(shè)文件系統(tǒng)中存在3個(gè)索引分組,標(biāo)識(shí)為0的索引分組的起始文件標(biāo)識(shí)為0并且可以存儲(chǔ)2000個(gè)文件信息存儲(chǔ)地址,標(biāo)識(shí)為1的索引分組的起始文件標(biāo)識(shí)為2000并且可以存儲(chǔ)3000個(gè)文件信息存儲(chǔ)地址,標(biāo)識(shí)為2的索引分組的起始文件標(biāo)識(shí)為5000并且可以存儲(chǔ)4000個(gè)文件信息存儲(chǔ)地址。
其中,設(shè)獲取到的文件標(biāo)識(shí)是2201,計(jì)算單元將文件標(biāo)識(shí)2201減去標(biāo)識(shí)為0的索引分組的起始文件標(biāo)識(shí)0,得到中間計(jì)算結(jié)果是2201。
步驟302、判斷索引分組標(biāo)識(shí)中間計(jì)算結(jié)果和索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量的大小。
其中,每個(gè)索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,表示的是每個(gè)索引分組所能存儲(chǔ)的文件信息存儲(chǔ)地址的最大數(shù)目,每個(gè)索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量都記錄在服務(wù)器預(yù)先存儲(chǔ)的 文件系統(tǒng)信息中,當(dāng)處理單元需要計(jì)算文件標(biāo)識(shí)對(duì)應(yīng)的文件信息在索引文件中的存儲(chǔ)位置時(shí),從文件系統(tǒng)信息中讀取單位索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量。
其中,索引分組包括多個(gè)索引文件,每個(gè)索引文件均包括預(yù)設(shè)數(shù)量的文件標(biāo)識(shí)和文件信息存儲(chǔ)地址的對(duì)應(yīng)關(guān)系。
可選地,在索引文件中,文件標(biāo)識(shí)和對(duì)應(yīng)的文件信息存儲(chǔ)地址也可以采用任意其他的存儲(chǔ)形式,這里不再一一贅述。
其中,在理論上,一個(gè)索引分組可以存儲(chǔ)232個(gè)文件信息,但是在實(shí)際的文件系統(tǒng)的使用過(guò)程中,為了使計(jì)算簡(jiǎn)單,會(huì)設(shè)定一個(gè)索引分組存儲(chǔ)幾千至幾萬(wàn)個(gè)文件信息。
其中,在文件系統(tǒng)中,索引分組的索引分組標(biāo)識(shí)、索引文件標(biāo)識(shí)和文件標(biāo)識(shí)均屬于包含0和正整數(shù)的整數(shù)集合。
其中,服務(wù)器生成文件標(biāo)識(shí)和文件信息存儲(chǔ)地址的對(duì)應(yīng)關(guān)系的具體過(guò)程如下:
當(dāng)服務(wù)器獲得用戶上傳的文件后,就會(huì)在索引文件中分配文件信息的存儲(chǔ)地址,并根據(jù)該文件信息的存儲(chǔ)地址將文件存儲(chǔ)在服務(wù)器的存儲(chǔ)器中。
比如,在得到索引分組標(biāo)識(shí)中間計(jì)算結(jié)果后,判斷得到的索引分組標(biāo)識(shí)中間計(jì)算結(jié)果2201是否小于該索引分組的可以存儲(chǔ)的文件信息存儲(chǔ)地址的數(shù)量2000。
步驟303、若確定索引分組標(biāo)識(shí)中間計(jì)算結(jié)果小于索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,則獲取相應(yīng)索引分組的標(biāo)識(shí),將獲取到的索引分組的標(biāo)識(shí)作為文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí)。
可選地,當(dāng)確定索引分組標(biāo)識(shí)中間計(jì)算結(jié)果大于或等于索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量時(shí),則計(jì)算單元返回步驟301,獲取與該索引分組相鄰的下一個(gè)索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量和起始文件標(biāo)識(shí),直到確定文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí)。
當(dāng)然,計(jì)算單元可以通過(guò)文件標(biāo)識(shí)、各索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量和索引分組的起始文件標(biāo)識(shí),通過(guò)其他現(xiàn)有的計(jì)算方法得到文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí),這里不再一一贅述。
比如,判斷2201大于該索引分組的可以存儲(chǔ)的文件信息存儲(chǔ)地址的數(shù)量2000,所以標(biāo)識(shí)為0的索引分組中不包含文件標(biāo)識(shí)為2201的文件信息存儲(chǔ)地址;然后計(jì)算單元將文件標(biāo)識(shí)2201減去標(biāo)識(shí)為1 的索引分組的起始文件標(biāo)識(shí)2000,得到索引分組標(biāo)識(shí)中間計(jì)算結(jié)果201,然后判斷索引分組標(biāo)識(shí)中間計(jì)算結(jié)果201小于該索引分組可以存儲(chǔ)的文件信息存儲(chǔ)地址的數(shù)量3000后,確定文件標(biāo)識(shí)為2201對(duì)應(yīng)的文件信息存儲(chǔ)地址在標(biāo)識(shí)為1的索引分組內(nèi)。
其中,計(jì)算單元對(duì)得到的索引分組標(biāo)識(shí)中間計(jì)算結(jié)果進(jìn)行緩存。
其中,索引分組標(biāo)識(shí)中間計(jì)算結(jié)果,用于指示文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址所在的索引分組。通過(guò)得到的索引分組標(biāo)識(shí)中間計(jì)算結(jié)果,處理單元可以進(jìn)一步的計(jì)算,得到文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí)。
比如:計(jì)算單元獲取到的文件標(biāo)識(shí)是2201、單位索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量是2000、通過(guò)計(jì)算得到文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí)是1,那么經(jīng)過(guò)計(jì)算:索引分組標(biāo)識(shí)中間計(jì)算結(jié)果=2201-2000×1=201。
步驟304、通過(guò)索引分組標(biāo)識(shí)中間計(jì)算結(jié)果除以單位索引文件存儲(chǔ)文件信息存儲(chǔ)地址數(shù)量,得到索引文件標(biāo)識(shí)中間計(jì)算結(jié)果。
其中,單位索引文件存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,表示的是每個(gè)索引文件所能存儲(chǔ)的文件信息存儲(chǔ)地址的最大數(shù)目,記錄在服務(wù)器預(yù)先存儲(chǔ)的文件系統(tǒng)信息中,當(dāng)處理單元需要計(jì)算文件標(biāo)識(shí)對(duì)應(yīng)的文件信息在索引文件中的存儲(chǔ)位置時(shí),從文件系統(tǒng)信息中讀取單位索引文件存儲(chǔ)的文件信息數(shù)量。
比如,在本實(shí)施例中,設(shè)單位索引文件存儲(chǔ)的文件信息單位索引分組數(shù)量是100,而通過(guò)計(jì)算得到的索引分組標(biāo)識(shí)中間計(jì)算結(jié)果是201,那么,索引文件標(biāo)識(shí)中間計(jì)算結(jié)果=201÷100=2.01。
其中,通過(guò)索引文件標(biāo)識(shí)中間計(jì)算結(jié)果是不能確定文件標(biāo)識(shí)所在的索引文件的標(biāo)識(shí)的,所以在得到索引文件標(biāo)識(shí)中間計(jì)算結(jié)果后,需要對(duì)索引文件標(biāo)識(shí)中間計(jì)算結(jié)果進(jìn)行向下取整計(jì)算,從而得到文件標(biāo)識(shí)所在的索引文件的標(biāo)識(shí)。
步驟305、對(duì)得到的索引文件標(biāo)識(shí)中間計(jì)算結(jié)果向下取整,得到文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí)。
其中,向下取整計(jì)算,就是去掉數(shù)字中的小數(shù)部分,保留數(shù)字中的整數(shù)部分作為計(jì)算結(jié)果。
其中,對(duì)作為索引文件標(biāo)識(shí)中間計(jì)算結(jié)果的數(shù)字2.01進(jìn)行向下取整,得到作為文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí)的數(shù)字2,說(shuō)明文件標(biāo)識(shí)在標(biāo)識(shí)是2的索引文件中。
步驟306、根據(jù)得到索引文件的標(biāo)識(shí),在索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址。
其中,文件信息存儲(chǔ)地址,包括文件信息在存儲(chǔ)器中的起始存儲(chǔ)位置和終止存儲(chǔ)位置。
其中,文件信息在存儲(chǔ)器中的起始存儲(chǔ)位置包括起始數(shù)據(jù)塊標(biāo)識(shí)和起始數(shù)據(jù)塊偏移地址,文件信息在存儲(chǔ)器中的終止存儲(chǔ)位置包括結(jié)束數(shù)據(jù)塊標(biāo)識(shí)和結(jié)束數(shù)據(jù)塊偏移地址。
具體地,本實(shí)施例通過(guò)以下多種方式獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址。
方式一:
通過(guò)索引分組標(biāo)識(shí)中間計(jì)算結(jié)果減去索引文件標(biāo)識(shí)和單位索引文件存儲(chǔ)文件信息數(shù)量的乘積,確定文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置;根據(jù)確定的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置,獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址。
比如:根據(jù)以上的舉例可知,計(jì)算單元所緩存的索引分組標(biāo)識(shí)中間計(jì)算結(jié)果是201,索引文件標(biāo)識(shí)是2,單位索引文件存儲(chǔ)文件信息數(shù)量是100,那么,經(jīng)過(guò)201-100×2=1,說(shuō)明文件標(biāo)識(shí)2201對(duì)應(yīng)的文件信息存儲(chǔ)地址存儲(chǔ)在標(biāo)識(shí)是1的索引分組中標(biāo)識(shí)是2的索引文件的第二個(gè)存儲(chǔ)位置上,在這個(gè)存儲(chǔ)位置上,存儲(chǔ)的內(nèi)容是:2201文件信息存儲(chǔ)地址的對(duì)應(yīng)關(guān)系。
方式二:
通過(guò)文件標(biāo)識(shí)減去索引文件的起始文件標(biāo)識(shí),確定文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置;根據(jù)確定的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置,獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址。
比如,根據(jù)上述的實(shí)施例可知,文件標(biāo)識(shí)是2201,標(biāo)識(shí)是2的索引文件的起始文件標(biāo)識(shí)是2200,那么通過(guò)文件標(biāo)識(shí)減去索引文件的起始文件標(biāo)識(shí)2200,得到的結(jié)果是0,那么說(shuō)明文件標(biāo)識(shí)2201對(duì)應(yīng)的文件信息索引標(biāo)識(shí)就存儲(chǔ)在標(biāo)識(shí)是2的索引文件中的第二個(gè) 存儲(chǔ)位置上,在這個(gè)存儲(chǔ)位置上,存儲(chǔ)的內(nèi)容是:2201文件信息存儲(chǔ)地址的對(duì)應(yīng)關(guān)系。
方式三:
通過(guò)文件標(biāo)識(shí),查詢索引文件中文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;獲取查詢到文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址。
具體地,通過(guò)文件標(biāo)識(shí),在得到的索引文件標(biāo)識(shí)對(duì)應(yīng)的索引文件中,通過(guò)遍歷的方式,查詢?cè)撍饕募写鎯?chǔ)多條文件標(biāo)識(shí)和文件信息存儲(chǔ)地址的對(duì)應(yīng)關(guān)系,找到與文件標(biāo)識(shí)相對(duì)應(yīng)的文件信息存儲(chǔ)地址,在找到與文件標(biāo)識(shí)相對(duì)應(yīng)的文件信息存儲(chǔ)地址后,獲取該文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址。
比如,根據(jù)上述的實(shí)施例可知,文件標(biāo)識(shí)是2201,索引文件標(biāo)識(shí)是2,那么計(jì)算單元會(huì)通過(guò)文件標(biāo)識(shí)2201在索引文件標(biāo)識(shí)是2的索引文件中的多條文件標(biāo)識(shí)和文件信息存儲(chǔ)地址的對(duì)應(yīng)關(guān)系中,找到與文件標(biāo)識(shí)2201相對(duì)應(yīng)的文件信息存儲(chǔ)地址。
其中,在得到文件標(biāo)識(shí)所在的索引文件的標(biāo)識(shí)后,由于索引文件中存儲(chǔ)的文件信息存儲(chǔ)地址的數(shù)量是有限的,通常也就是幾百個(gè)(在本實(shí)施例中是100個(gè)),因此不論處理單元是通過(guò)計(jì)算的方式,還是查詢的方式,都可以很快速的找到文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址,達(dá)到快速處理文件信息的目的。
步驟307、根據(jù)獲取到的文件信息存儲(chǔ)地址,讀取存儲(chǔ)的文件信息,并對(duì)讀取的文件信息進(jìn)行處理。
具體地,根據(jù)得到的文件信息存儲(chǔ)地址,處理單元向文件系統(tǒng)發(fā)送文件信息讀取指令,將文件信息讀取到處理單元所在的服務(wù)器的緩存或者內(nèi)存中,然后對(duì)讀取的文件信息進(jìn)行處理。
其中,對(duì)讀取的文件信息的處理包括:對(duì)該用戶的文件信息中記錄的相關(guān)文件信息進(jìn)行更新。
基于以上描述,本實(shí)施例提供的一種文件處理方法,通過(guò)對(duì)獲取到的文件標(biāo)識(shí)和各索引分組中存儲(chǔ)的文件信息數(shù)量和索引分組的起始文件標(biāo)識(shí)進(jìn)行計(jì)算,得到文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí),然后對(duì)文件標(biāo)識(shí)、索引分組的標(biāo)識(shí)和單位索引文件存儲(chǔ)的文件信息數(shù)量進(jìn)行計(jì)算,得到文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí),在索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址,通過(guò)對(duì)用戶輸入的文件標(biāo)識(shí)進(jìn)行簡(jiǎn)單的計(jì)算,就可以找到用戶文件信息 的存儲(chǔ)地址,從而只需要很短的時(shí)間,就可以對(duì)用戶上傳的圖片或者視頻進(jìn)行處理,縮短網(wǎng)盤(pán)的服務(wù)器的文件處理時(shí)間,提高了用戶使用網(wǎng)盤(pán)的體驗(yàn)。
實(shí)施例3
參見(jiàn)圖4,本實(shí)施例提供一種文件處理裝置,該裝置包括:
文件標(biāo)識(shí)獲取模塊400、第一計(jì)算模塊401、第二計(jì)算模塊402、文件信息存儲(chǔ)地址獲取模塊403和處理模塊404。
其中,文件標(biāo)識(shí)獲取模塊400,用于獲取用戶輸入的文件標(biāo)識(shí);
第一計(jì)算模塊401,與文件標(biāo)識(shí)獲取模塊400連接,用于根據(jù)文件標(biāo)識(shí)、各索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量和索引分組的起始文件標(biāo)識(shí),計(jì)算文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí);索引分組包括多個(gè)索引文件,每個(gè)索引文件用于存儲(chǔ)預(yù)設(shè)數(shù)量的文件信息的存儲(chǔ)地址;
第二計(jì)算模塊402,與第一計(jì)算模塊401連接,用于根據(jù)單位索引文件存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,計(jì)算文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí);
文件信息存儲(chǔ)地址獲取模塊403,與第二計(jì)算模塊402連接,用于根據(jù)得到索引文件的標(biāo)識(shí),在索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;
處理模塊404,與文件信息存儲(chǔ)地址獲取模塊403連接,用于根據(jù)獲取到的文件信息存儲(chǔ)地址,讀取存儲(chǔ)的文件信息,并對(duì)讀取的文件信息進(jìn)行處理。
其中,第一計(jì)算模塊401包括:
第一計(jì)算單元4011,用于通過(guò)獲取到的文件標(biāo)識(shí)減去索引分組的起始文件標(biāo)識(shí),得到索引分組標(biāo)識(shí)中間計(jì)算結(jié)果;
第二計(jì)算單元4012,用于判斷索引分組標(biāo)識(shí)中間計(jì)算結(jié)果和索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量的大??;
索引分組標(biāo)識(shí)確定單元4013,用于若確定索引分組標(biāo)識(shí)中間計(jì)算結(jié)果小于索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,則獲取相應(yīng)索引分組的標(biāo)識(shí),將獲取到的索引分組的標(biāo)識(shí)作為文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí)。
其中,第二計(jì)算模塊402包括:
第三計(jì)算單元4021,用于
通過(guò)索引分組標(biāo)識(shí)中間計(jì)算結(jié)果除以單位索引文件存儲(chǔ)文件信息存儲(chǔ)地址數(shù)量,得到索引文件標(biāo)識(shí)中間計(jì)算結(jié)果;
第四計(jì)算單元4022,用于對(duì)得到的索引文件標(biāo)識(shí)中間計(jì)算結(jié)果向下取整,得到文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí)。
其中,文件信息存儲(chǔ)地址獲取模塊403包括:
第五計(jì)算單元,用于通過(guò)索引分組標(biāo)識(shí)中間計(jì)算結(jié)果減去索引文件標(biāo)識(shí)和單位索引文件存儲(chǔ)文件信息數(shù)量的乘積,確定文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置;
第一獲取單元,用于根據(jù)確定的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置,獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;
或者,
第六計(jì)算單元,用于通過(guò)文件標(biāo)識(shí)減去索引文件的起始文件標(biāo)識(shí),確定文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置;
第二獲取單元,用于根據(jù)確定的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置,獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;
或者,
查詢單元,用于通過(guò)文件標(biāo)識(shí),查詢索引文件中文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;
第三獲取單元,用于獲取查詢到文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址。
本實(shí)施例還提供一種文件系統(tǒng),包括上述的文件處理裝置。
參見(jiàn)圖5,本實(shí)施例提供了另一種文件系統(tǒng),該文件系統(tǒng)通過(guò)將所存儲(chǔ)數(shù)據(jù)進(jìn)行分塊存儲(chǔ),并通過(guò)設(shè)置的索引分組進(jìn)行數(shù)據(jù)的管理,來(lái)提供一種自動(dòng)增長(zhǎng)的文件標(biāo)識(shí),借助于索引分組可以實(shí)現(xiàn)無(wú)限數(shù)量的文件信息的存儲(chǔ);在只有一個(gè)索引分組的情況下,文件標(biāo)識(shí)的數(shù)量在232個(gè)以內(nèi)。借助有組織的文件標(biāo)識(shí),在沒(méi)有元數(shù)據(jù)的情況下通過(guò)計(jì)算文件標(biāo)識(shí)依然可以實(shí)現(xiàn)對(duì)文件標(biāo)識(shí)對(duì)應(yīng)的文件進(jìn)行訪問(wèn),同時(shí)釋放了元數(shù)據(jù)的存儲(chǔ)空間。由于沒(méi)有元數(shù)據(jù),因而所有的文件定位都是通過(guò)計(jì)算直接得來(lái)的,從而降低了服務(wù)器處理文件的系統(tǒng)開(kāi)銷(xiāo)。通過(guò)統(tǒng)一的文件標(biāo)識(shí)來(lái)對(duì)存儲(chǔ)的文件進(jìn)行管理,放棄文件夾和文件名,可以獲得更多的存儲(chǔ)空間和減少網(wǎng)絡(luò)通信的數(shù)據(jù) 量。通過(guò)自動(dòng)增長(zhǎng)的文件標(biāo)識(shí),可以實(shí)現(xiàn)服務(wù)器對(duì)存儲(chǔ)的文件信息具有類(lèi)似數(shù)據(jù)庫(kù)訪問(wèn)的方式,可以更好更簡(jiǎn)便的進(jìn)行遍歷訪問(wèn)和更清晰的對(duì)外開(kāi)放的接口,還可以組織成數(shù)據(jù)庫(kù)的存儲(chǔ)引擎。
該文件系統(tǒng)通過(guò)將所存儲(chǔ)數(shù)據(jù)進(jìn)行分塊,并通過(guò)設(shè)置的索引分組進(jìn)行數(shù)據(jù)的管理,還可以降低訪問(wèn)熱點(diǎn)的概率,實(shí)現(xiàn)服務(wù)器對(duì)眾多文件信息的更新請(qǐng)求的快速響應(yīng),提高了文件系統(tǒng)同時(shí)更新多個(gè)文件信息時(shí)的并行處理速度。通過(guò)將數(shù)據(jù)進(jìn)行分塊,可以將大文件分成多塊來(lái)存儲(chǔ),在對(duì)每一個(gè)塊進(jìn)行追加寫(xiě)操作時(shí)不會(huì)影響其他的數(shù)據(jù)塊的操作,同時(shí)也不影響對(duì)本數(shù)據(jù)塊已經(jīng)寫(xiě)入的數(shù)據(jù)的訪問(wèn)或修改,從而提高數(shù)據(jù)的并行處理速度。再者,通過(guò)將眾多小文件寫(xiě)入一個(gè)數(shù)據(jù)塊內(nèi),來(lái)減少碎片的生成,同時(shí)提供更多的文件數(shù)量的支持。
文件標(biāo)識(shí)表示的是文件系統(tǒng)中用于表征所存儲(chǔ)的文件信息的標(biāo)識(shí),每次新寫(xiě)入一個(gè)文件信息時(shí),服務(wù)器都會(huì)對(duì)文件標(biāo)識(shí)進(jìn)行自動(dòng)增加,從而保證分組內(nèi)文件標(biāo)識(shí)的唯一性。
對(duì)于任何一個(gè)文件標(biāo)識(shí),都會(huì)被存儲(chǔ)到任一索引文件中。每個(gè)文件標(biāo)識(shí)對(duì)應(yīng)的文件信息會(huì)存儲(chǔ)到索引文件中的固定位置上,而且每個(gè)文件標(biāo)識(shí)在索引文件中占用固定字節(jié),所以在服務(wù)器根據(jù)文件標(biāo)識(shí)可以計(jì)算出該文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置后,獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址,從而打開(kāi)文件標(biāo)識(shí)對(duì)應(yīng)的文件信息,進(jìn)行文件信息中數(shù)據(jù)的讀寫(xiě)。
一個(gè)索引分組內(nèi)預(yù)存儲(chǔ)有多個(gè)索引文件,用來(lái)根據(jù)文件標(biāo)識(shí)的計(jì)算來(lái)獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址。文件信息存儲(chǔ)地址一般包括:文件信息存儲(chǔ)的起始數(shù)據(jù)塊標(biāo)識(shí)和結(jié)束數(shù)據(jù)塊標(biāo)識(shí)、以及分別在起始數(shù)據(jù)塊和結(jié)束數(shù)據(jù)塊偏移地址。此文件信息占用固定大小的字節(jié),所以每個(gè)索引文件可以包含預(yù)設(shè)數(shù)量的文件信息,使用多個(gè)索引文件來(lái)存儲(chǔ)232個(gè)文件信息,同時(shí)也可以實(shí)現(xiàn)索引文件的并發(fā)。由于每個(gè)文件信息存儲(chǔ)地址中的起始數(shù)據(jù)塊標(biāo)識(shí)都會(huì)指向一個(gè)數(shù)據(jù)塊,所以在服務(wù)器同時(shí)處理多個(gè)文件信息的情況下,不會(huì)存在同時(shí)向同一個(gè)數(shù)據(jù)塊進(jìn)行讀寫(xiě)數(shù)據(jù)的情況,并發(fā)時(shí)每個(gè)文件信息存儲(chǔ)地址會(huì)分配不同的數(shù)據(jù)塊來(lái)進(jìn)行讀寫(xiě)。數(shù)據(jù)塊的容量只會(huì)在寫(xiě)入數(shù)據(jù)的情況下進(jìn)行增長(zhǎng),不會(huì)由于文件的刪除而釋放存儲(chǔ)空間,因而每個(gè)數(shù)據(jù)塊中已經(jīng)寫(xiě)入的數(shù)據(jù)大小是不會(huì)變的,所以在對(duì)某一 個(gè)數(shù)據(jù)塊寫(xiě)入數(shù)據(jù)的同時(shí),可以對(duì)已經(jīng)寫(xiě)入此數(shù)據(jù)塊的文件信息進(jìn)行讀取或修改。
當(dāng)存在一個(gè)數(shù)據(jù)塊存儲(chǔ)不了的大文件時(shí),文件系統(tǒng)就會(huì)將該大文件存儲(chǔ)到多個(gè)數(shù)據(jù)塊中,則在存儲(chǔ)該大文件后,該大文件的文件信息中會(huì)存儲(chǔ)該大文件的起始數(shù)據(jù)塊標(biāo)識(shí)和結(jié)束數(shù)據(jù)塊標(biāo)識(shí),以及該大文件分別在起始數(shù)據(jù)塊和結(jié)束數(shù)據(jù)塊中的偏移地址;其中,起始數(shù)據(jù)塊中的偏移地址是該大文件的起始存儲(chǔ)位置,而結(jié)束數(shù)據(jù)塊中的偏移地址是該大文件的終止存儲(chǔ)位置。
創(chuàng)建文件時(shí),文件系統(tǒng)通過(guò)文件池判斷是否可以寫(xiě)入,文件總數(shù)量小于232個(gè)或每類(lèi)數(shù)據(jù)塊數(shù)量小于232個(gè)或等于232個(gè)但存在沒(méi)有寫(xiě)滿的數(shù)據(jù)塊的時(shí)候,此時(shí)可以寫(xiě)入文件。在確定可以寫(xiě)入文件后,文件系統(tǒng)先分配一個(gè)索引文件中空閑的文件信息,通過(guò)索引文件的文件大小和索引文件的文件標(biāo)識(shí)來(lái)生成232進(jìn)制內(nèi)的文件標(biāo)識(shí),此文件標(biāo)識(shí)即為該創(chuàng)建文件的文件標(biāo)識(shí)。然后分配一個(gè)存儲(chǔ)具體內(nèi)容的數(shù)據(jù)塊,并將此數(shù)據(jù)塊的標(biāo)識(shí)和將要寫(xiě)入的文件的存儲(chǔ)地址等寫(xiě)入文件信息中,用來(lái)構(gòu)建指向該被創(chuàng)建文件的索引,同時(shí)將需要寫(xiě)入的內(nèi)容寫(xiě)入相應(yīng)的數(shù)據(jù)塊中,同時(shí)將此索引的反向日志寫(xiě)入此數(shù)據(jù)塊的臨時(shí)反向日志文件中。并在文件池中記錄新的文件數(shù)量。
如果此數(shù)據(jù)塊可以完全寫(xiě)入將要寫(xiě)入的文件內(nèi)容,則使用前面所述的方法。如果文件系統(tǒng)確定新創(chuàng)建的文件需要多個(gè)數(shù)據(jù)塊存儲(chǔ)時(shí),則會(huì)繼續(xù)分配多個(gè)數(shù)據(jù)塊來(lái)寫(xiě)入該文件未寫(xiě)入文本信息的部分,直到將該文件完全寫(xiě)入文件系統(tǒng),并在該被創(chuàng)建文件的文件信息中,記錄存儲(chǔ)該大文件的起始數(shù)據(jù)塊標(biāo)識(shí)和結(jié)束數(shù)據(jù)塊標(biāo)識(shí),以及該大文件分別在起始數(shù)據(jù)塊和結(jié)束數(shù)據(jù)塊中的偏移地址。
如果文件寫(xiě)入前可以確定此文件會(huì)被頻繁修改,則可以通過(guò)標(biāo)識(shí)將每個(gè)數(shù)據(jù)塊的偏移位置的頭部預(yù)留出后續(xù)數(shù)據(jù)塊的文件信息,最后一個(gè)數(shù)據(jù)塊的頭部文件信息是空的,以便在進(jìn)行文件寫(xiě)入的時(shí)候不會(huì)產(chǎn)生更多的數(shù)據(jù)遷移。如果沒(méi)有標(biāo)識(shí)則存儲(chǔ)數(shù)據(jù)的最后一個(gè)數(shù)據(jù)塊內(nèi)的數(shù)據(jù)會(huì)將會(huì)產(chǎn)生數(shù)據(jù)遷移。
在向新創(chuàng)建的文件分配新的數(shù)據(jù)塊的時(shí)候,會(huì)將該數(shù)據(jù)塊的容量信息等寫(xiě)入容量數(shù)據(jù)塊中。容量數(shù)據(jù)塊也由文件池文件進(jìn)行分配。每次寫(xiě)入新文件的時(shí)候都會(huì)將數(shù)據(jù)塊的容量信息寫(xiě)入對(duì)應(yīng)的容量數(shù) 據(jù)塊中,同時(shí)將對(duì)應(yīng)此數(shù)據(jù)塊的索引的反向日志寫(xiě)入該數(shù)據(jù)塊的臨時(shí)反向日志文件中。當(dāng)該數(shù)據(jù)塊寫(xiě)滿時(shí),會(huì)將該數(shù)據(jù)塊的臨時(shí)反向日志文件記錄到分塊的反向日志數(shù)據(jù)塊中,并將反向日志數(shù)據(jù)塊的標(biāo)識(shí)和偏移等索引信息記錄到容量數(shù)據(jù)塊中的對(duì)應(yīng)該數(shù)據(jù)塊的索引上。然后釋放臨時(shí)的反向日志文件來(lái)提供給其他的新的數(shù)據(jù)塊。
文件池中的每類(lèi)數(shù)據(jù)塊的分配都是通過(guò)自動(dòng)增長(zhǎng)的文件標(biāo)識(shí)進(jìn)行分配的,每類(lèi)數(shù)據(jù)塊的數(shù)量在232個(gè)以內(nèi)。當(dāng)需要?jiǎng)?chuàng)建新的文件時(shí),文件系統(tǒng)先考慮分配某類(lèi)數(shù)據(jù)塊的時(shí)候先取出該類(lèi)數(shù)據(jù)塊中空閑的數(shù)據(jù)塊進(jìn)行分配,如果沒(méi)有,則再分配該類(lèi)數(shù)據(jù)塊中已寫(xiě)有數(shù)據(jù)但并未寫(xiě)滿的數(shù)據(jù)塊。
文件系統(tǒng)通過(guò)設(shè)置索引分組可以提供無(wú)限數(shù)量的文件的支持。此時(shí)會(huì)創(chuàng)建一個(gè)分組文件,每個(gè)索引分組內(nèi)通過(guò)多個(gè)索引文件對(duì)文件標(biāo)識(shí)進(jìn)行管理,其中,文件標(biāo)識(shí)的個(gè)數(shù)在232個(gè)以內(nèi)。
文件定位的方法分為兩種。在只有一個(gè)索引分組時(shí),因?yàn)閱蝹€(gè)索引分組內(nèi)文件數(shù)量在232個(gè)以內(nèi),每個(gè)索引文件會(huì)記錄相同個(gè)數(shù)的文件索引信息,因?yàn)槊總€(gè)索引文件的大小相同并且記錄的每個(gè)索引信息的大小也相同,所以每個(gè)索引文件可以記錄固定數(shù)量的文件信息。每個(gè)索引文件都會(huì)存儲(chǔ)相同數(shù)量的文件信息,同一索引分組中各索引文件中存儲(chǔ)的文件標(biāo)識(shí)是按照自然數(shù)從小到大的順序設(shè)置的,且各索引文件都預(yù)先存儲(chǔ)有預(yù)設(shè)數(shù)量的文件信息。假設(shè)一個(gè)索引文件中存儲(chǔ)有100個(gè)文件信息存儲(chǔ)地址,那么,第一個(gè)索引文件存儲(chǔ)文件標(biāo)識(shí)1至100的文件信息存儲(chǔ)地址,第二個(gè)索引文件存儲(chǔ)文件標(biāo)識(shí)101至200的文件信息存儲(chǔ)地址……。因?yàn)榻M內(nèi)的索引文件個(gè)數(shù)存在上限(所有索引文件中的索引信息個(gè)數(shù)在232個(gè)以內(nèi)),所以將用戶輸入的文件標(biāo)識(shí)除以單個(gè)索引文件中的索引信息的數(shù)量上限并向下取整(如:201/100=2),從而得到存儲(chǔ)此文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址的索引文件標(biāo)識(shí),因而可以確定文件信息存儲(chǔ)在相應(yīng)序號(hào)的索引文件中。然后將文件標(biāo)識(shí)減去此索引文件起始文件標(biāo)識(shí)(如:201-200=1),即得到基于此索引文件的標(biāo)識(shí),因?yàn)槊總€(gè)索引信息占用固定大小,所以將此標(biāo)識(shí)乘以每個(gè)索引信息的固定大小,從而可以偏移到此標(biāo)識(shí)對(duì)應(yīng)的索引信息位置。取出文件信息,其中包含了存放文件信息存儲(chǔ)地址的數(shù)據(jù)塊的標(biāo)識(shí),和在該數(shù)據(jù)塊中的偏移地址。然后根據(jù)數(shù)據(jù)塊的標(biāo)識(shí)打開(kāi)該數(shù)據(jù)塊中存儲(chǔ) 的文件,并根據(jù)偏移地址,讀取文件信息,即實(shí)現(xiàn)了對(duì)文件信息的定位。
在存在多個(gè)索引分組的情況下,首先通過(guò)文件標(biāo)識(shí)在多個(gè)索引分組文件中進(jìn)行查找,找到目標(biāo)索引分組。每個(gè)索引分組中每個(gè)分組都有相同或不同的文件信息個(gè)數(shù)(可以手動(dòng)設(shè)置每個(gè)索引分組內(nèi)文件數(shù)量上限,且每個(gè)索引分組內(nèi)文件信息的數(shù)量在232個(gè)以內(nèi),如:0-999,1000-1999,2000–4999等,根據(jù)文件標(biāo)識(shí)查找到目標(biāo)索引分組,然后減去目標(biāo)索引分組的基數(shù)(如:2201-2000=201),從而得到該文件標(biāo)識(shí)在索引分組內(nèi)的哪一個(gè)索引文件中,然后采用前面所述的方法在索引分組內(nèi)對(duì)文件標(biāo)識(shí)對(duì)應(yīng)的文件信息進(jìn)行定位。
修改文件時(shí),根據(jù)文件標(biāo)識(shí)獲取文件信息存儲(chǔ)地址,定位到目標(biāo)數(shù)據(jù)塊的目標(biāo)偏移地址處,然后根據(jù)修改的偏移起始位置和修改的數(shù)據(jù)大小進(jìn)行覆蓋寫(xiě)入或追加寫(xiě)入,并在記載文件信息的第一個(gè)數(shù)據(jù)塊中記錄修改后的文件的總大小。對(duì)于追加寫(xiě)入分為兩種情況:1、如果最后一個(gè)數(shù)據(jù)塊中沒(méi)有空余的文件信息則將該數(shù)據(jù)塊中的數(shù)據(jù)讀取出來(lái),然后判斷空間是否可以寫(xiě)入后續(xù)數(shù)據(jù)塊的文件信息,如果空間不足,則將此塊記錄標(biāo)記為刪除,同時(shí)在容量屬性數(shù)據(jù)塊中釋放該數(shù)據(jù)塊的容量,然后分配新的數(shù)據(jù)塊來(lái)寫(xiě)入讀取出的信息和將要追加的信息,同時(shí)將新的數(shù)據(jù)塊的標(biāo)識(shí)和偏移地址的索引寫(xiě)入上一個(gè)數(shù)據(jù)塊的索引中。2、如果存儲(chǔ)文件的最后一個(gè)數(shù)據(jù)塊中存在空余的索引信息,則分配新的數(shù)據(jù)塊,并將新的數(shù)據(jù)塊的文件標(biāo)識(shí)和偏移信息的索引寫(xiě)入空余的索引中,然后在新的數(shù)據(jù)塊中寫(xiě)入將要追加的內(nèi)容。此步驟可能重復(fù)多次。對(duì)于覆蓋寫(xiě)入,會(huì)將文件偏移到指定偏移處,然后覆蓋寫(xiě)入指定大小的內(nèi)容。
讀取文件時(shí),根據(jù)文件標(biāo)識(shí)獲取文件信息,判斷此文件是否已經(jīng)刪除,如果沒(méi)有刪除則根據(jù)指定的偏移和大小打開(kāi)一個(gè)或多個(gè)指向的數(shù)據(jù)塊來(lái)讀取處數(shù)據(jù),如果指定的讀取大小大于實(shí)際存儲(chǔ)的大小則讀取實(shí)際大小的內(nèi)容。
刪除文件時(shí),根據(jù)文件標(biāo)識(shí)獲取索引信息,判斷此文件是否已經(jīng)刪除,如果沒(méi)有刪除則將此文件標(biāo)記為刪除,并將指向的所有數(shù)據(jù)塊的內(nèi)容的容量釋放到對(duì)應(yīng)的容量數(shù)據(jù)塊中,同時(shí)將文件池文件的有效文件數(shù)進(jìn)行減操作,已經(jīng)刪除的文件數(shù)量進(jìn)行加操作。刪除 文件時(shí)并不立刻真正刪除內(nèi)容??梢栽谒槠淼臅r(shí)候進(jìn)行真正刪除。
通過(guò)以上的描述,本實(shí)施例提供的文件系統(tǒng),通過(guò)文件標(biāo)識(shí)的計(jì)算快速定位內(nèi)容,還可以提供更高的并發(fā)性能,對(duì)大小文件都友好,實(shí)現(xiàn)對(duì)文件的常態(tài)訪問(wèn)。
基于以上描述,本實(shí)施例提供的一種文件處理裝置和文件系統(tǒng),通過(guò)對(duì)獲取到的文件標(biāo)識(shí)和各索引分組中存儲(chǔ)的文件信息數(shù)量和索引分組的起始文件標(biāo)識(shí)進(jìn)行計(jì)算,得到文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí),然后對(duì)文件標(biāo)識(shí)、索引分組的標(biāo)識(shí)和單位索引文件存儲(chǔ)的文件信息數(shù)量進(jìn)行計(jì)算,得到文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí),在索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址,通過(guò)對(duì)用戶輸入的文件標(biāo)識(shí)進(jìn)行簡(jiǎn)單的計(jì)算,就可以找到用戶文件信息的存儲(chǔ)地址,從而只需要很短的時(shí)間,就可以對(duì)用戶上傳的圖片或者視頻進(jìn)行處理,縮短網(wǎng)盤(pán)的服務(wù)器的文件處理時(shí)間,提高了用戶使用網(wǎng)盤(pán)的體驗(yàn)。
實(shí)施例4
參見(jiàn)圖6,本實(shí)施例提供一種文件處理裝置,該裝置包括:
處理器500、存儲(chǔ)器501和總線;處理器500和存儲(chǔ)器501通過(guò)總線連接;
存儲(chǔ)器501用于存儲(chǔ)可執(zhí)行程序;
處理器500,用于通過(guò)總線調(diào)用存儲(chǔ)在存儲(chǔ)器501中的可執(zhí)行程序,執(zhí)行上述文件處理方法:獲取用戶輸入的文件標(biāo)識(shí);
根據(jù)文件標(biāo)識(shí)、各索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量和索引分組的起始文件標(biāo)識(shí),計(jì)算文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí);索引分組包括多個(gè)索引文件,每個(gè)索引文件用于存儲(chǔ)預(yù)設(shè)數(shù)量的文件信息的存儲(chǔ)地址;
根據(jù)單位索引文件存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,計(jì)算文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí);
根據(jù)得到索引文件的標(biāo)識(shí),在索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;
根據(jù)獲取到的文件信息存儲(chǔ)地址,讀取存儲(chǔ)的文件信息,并對(duì)讀取的文件信息進(jìn)行處理。
其中,根據(jù)文件標(biāo)識(shí)、各索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量和索引分組的起始文件標(biāo)識(shí),計(jì)算文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí)包括:
通過(guò)獲取到的文件標(biāo)識(shí)減去索引分組的起始文件標(biāo)識(shí),得到索引分組標(biāo)識(shí)中間計(jì)算結(jié)果;
判斷索引分組標(biāo)識(shí)中間計(jì)算結(jié)果和索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量的大小;
若確定索引分組標(biāo)識(shí)中間計(jì)算結(jié)果小于索引分組中存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,則獲取相應(yīng)索引分組的標(biāo)識(shí),將獲取到的索引分組的標(biāo)識(shí)作為文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí)。
其中,根據(jù)單位索引文件存儲(chǔ)的文件信息存儲(chǔ)地址數(shù)量,計(jì)算文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí)包括:
通過(guò)索引分組標(biāo)識(shí)中間計(jì)算結(jié)果除以單位索引文件存儲(chǔ)文件信息存儲(chǔ)地址數(shù)量,得到索引文件標(biāo)識(shí)中間計(jì)算結(jié)果;
對(duì)得到的索引文件標(biāo)識(shí)中間計(jì)算結(jié)果向下取整,得到文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí)。
其中,根據(jù)得到索引文件的標(biāo)識(shí),在索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址包括:
通過(guò)索引分組標(biāo)識(shí)中間計(jì)算結(jié)果減去索引文件標(biāo)識(shí)和單位索引文件存儲(chǔ)文件信息數(shù)量的乘積,確定文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置;
根據(jù)確定的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置,獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;
或者,
通過(guò)文件標(biāo)識(shí)減去索引文件的起始文件標(biāo)識(shí),確定文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置;
根據(jù)確定的文件信息存儲(chǔ)地址在索引文件中的存儲(chǔ)位置,獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;
或者,
通過(guò)文件標(biāo)識(shí),查詢索引文件中文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址;
獲取查詢到文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址。
基于以上描述,本實(shí)施例提供的一種文件處理裝置,通過(guò)對(duì)獲取到的文件標(biāo)識(shí)和各索引分組中存儲(chǔ)的文件信息數(shù)量和索引分組的起始文件標(biāo)識(shí)進(jìn)行計(jì)算,得到文件標(biāo)識(shí)所在的索引分組的標(biāo)識(shí),然后對(duì)文件標(biāo)識(shí)、索引分組的標(biāo)識(shí)和單位索引文件存儲(chǔ)的文件信息數(shù)量進(jìn)行計(jì)算,得到文件標(biāo)識(shí)所在索引文件的標(biāo)識(shí),在索引文件的標(biāo)識(shí)對(duì)應(yīng)的索引文件中獲取文件標(biāo)識(shí)對(duì)應(yīng)的文件信息存儲(chǔ)地址,通過(guò)對(duì)用戶輸入的文件標(biāo)識(shí)進(jìn)行簡(jiǎn)單的計(jì)算,就可以找到用戶文件信息的存儲(chǔ)地址,從而只需要很短的時(shí)間,就可以對(duì)用戶上傳的圖片或者視頻進(jìn)行處理,縮短網(wǎng)盤(pán)的服務(wù)器的文件處理時(shí)間,提高了用戶使用網(wǎng)盤(pán)的體驗(yàn)。
本發(fā)明各實(shí)施例所提供的文件處理方法的計(jì)算機(jī)程序產(chǎn)品,包括存儲(chǔ)了程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),程序代碼包括的指令可用于執(zhí)行前面方法實(shí)施例中的方法,具體實(shí)現(xiàn)可參見(jiàn)方法實(shí)施例,在此不再贅述。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。以上所描述的裝置實(shí)施例僅僅是示意性的,例如,單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,又例如,多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些通信接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。
功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(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)。