專利名稱::一種目錄管理方法和裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及目錄管理技術(shù),特別是指一種在分布式文件系統(tǒng)中的目錄管理的方法和裝置。
背景技術(shù):
:隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展和通信信息量的急劇增加,分布式文件系統(tǒng)越來(lái)越多地被應(yīng)用于數(shù)據(jù)存儲(chǔ)領(lǐng)域,特別是海量數(shù)據(jù)的存儲(chǔ)。分布式文件系統(tǒng)一般由一個(gè)元數(shù)據(jù)服務(wù)器、多個(gè)存儲(chǔ)服務(wù)器和多個(gè)客戶端組成,其中,存儲(chǔ)服務(wù)器提供海量的數(shù)據(jù)存儲(chǔ)和海量的吞吐率;元數(shù)據(jù)服務(wù)器向用戶提供系統(tǒng)中所有文件名稱的存儲(chǔ)空間,每個(gè)文件和目錄在分布式文件系統(tǒng)中都有一個(gè)統(tǒng)一且唯一的名稱,在所有的服務(wù)器上,用戶通過(guò)客戶端都可以使用相同的名稱訪問(wèn)相應(yīng)的目錄或文件,而不需要關(guān)心目錄或文件的實(shí)際存儲(chǔ)位置和存儲(chǔ)相應(yīng)目錄或文件的元數(shù)據(jù)服務(wù)器的位置。整個(gè)分布式文件系統(tǒng)的目錄存儲(chǔ)在元數(shù)據(jù)服務(wù)器中,目前,對(duì)于目錄的管理方法有以下幾種1、存儲(chǔ)目錄、文件的全路徑名稱,對(duì)文件名稱檢索采用哈希(Hash)算法。這種方法由于文件名的本質(zhì)是一個(gè)字符串,且文件的全路徑名稱除去該文件的唯一標(biāo)識(shí)名稱外,前半部分表示其存儲(chǔ)路徑的名稱與其他文件的前半部分的名稱相同的概率很大,這樣導(dǎo)致Hash算法實(shí)現(xiàn)非常的困難,特別是很難避免Hash沖突,當(dāng)產(chǎn)生大量沖突后,會(huì)導(dǎo)致訪問(wèn)效率嚴(yán)重降低。并且,由于存儲(chǔ)的是文件的全路徑名稱,如此,會(huì)導(dǎo)致內(nèi)存空間的嚴(yán)重浪費(fèi),并使目錄、文件名稱存在冗余的情況。2、存儲(chǔ)目錄、文件的全路徑名稱,對(duì)文件名稱采用單一的平衡二叉樹(shù)管理。這種方法檢索文件的速度很快,但是,全路徑名稱的存儲(chǔ)造成存儲(chǔ)空間的浪費(fèi)很嚴(yán)重;并且,隨著文件的增多,該二叉樹(shù)會(huì)越來(lái)越龐大,如此,將導(dǎo)致每次增加、刪除文件后的平衡工作開(kāi)銷增大,從而降低文件系統(tǒng)的訪問(wèn)效率。
發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種目錄管理方法和裝置,能提高對(duì)目錄、文件的檢索效率,避免由于存儲(chǔ)目錄、文件的全路徑名稱所造成的存儲(chǔ)空間的浪費(fèi)。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的本發(fā)明公開(kāi)了一種目錄管理方法,在客戶端創(chuàng)建目錄或文件,并輸入目錄或文件的全路徑名稱,將所述全路徑名稱發(fā)送給元數(shù)據(jù)服務(wù)器,該方法包括對(duì)所述全路徑名稱進(jìn)行分析,得到所述全路徑名稱表示的目錄或文件的短名稱;依據(jù)所述短名稱,為所述短名稱表示的目錄或文件分配空閑節(jié)點(diǎn);存在,則所述空閑節(jié)點(diǎn)單獨(dú)生成平衡二叉樹(shù);如果存在,則將所述空閑節(jié)點(diǎn)插入所述同級(jí)目錄或文件的節(jié)點(diǎn)生成的平衡二叉樹(shù)中;根據(jù)平衡規(guī)則對(duì)所有的平衡二叉樹(shù)執(zhí)行平衡操作,生成多級(jí)平衡二叉樹(shù);并依據(jù)所述生成的多級(jí)平衡二叉樹(shù)對(duì)目錄進(jìn)行管理。所述短名稱為所述目錄或文件的唯一標(biāo)識(shí)名稱。所述空閑節(jié)點(diǎn)由文件名FileName、子樹(shù)pSubTree、左子樹(shù)pLeftTree和右子樹(shù)pRighftTree組成,其中,F(xiàn)ileName的域值依據(jù)所述短名稱取值;所述空閑節(jié)點(diǎn)表示目錄時(shí),pSubTree指向所述目錄的下一級(jí)目錄所在的平衡二叉樹(shù)的根節(jié)點(diǎn),所述目錄所在的平衡二叉樹(shù)的子樹(shù)是所述下一級(jí)目錄所在的平衡二叉樹(shù);所述空閑節(jié)點(diǎn)表示文件時(shí),pSubTree為空MJLL。所述平衡規(guī)則為依據(jù)所述平衡二叉樹(shù)中FileName、pLeftTreep和RighftTree域值的大小,對(duì)FileName、pLeftTreep和RighttTree重新賦值。所述依據(jù)多級(jí)平衡二叉樹(shù)對(duì)整個(gè)文件系統(tǒng)的目錄進(jìn)行管理,包括遍歷目錄、查找文件、增加文件、刪除文件、修改文件名稱、移動(dòng)文件中的任意一種或任意多種的組合。本發(fā)明還公開(kāi)了一種目錄管理裝置,該裝置包括分析模塊,用于對(duì)全路徑名稱進(jìn)行分析,得到所述全路徑名稱表示的目錄或者文件的短名稱;節(jié)點(diǎn)分配模塊,用于依據(jù)所述短名稱,為所述短名稱表示的目錄或文件分配空閑節(jié)點(diǎn);判斷模塊,用于判斷與所述短名稱表示的目錄或文件同級(jí)的目錄或文件是否存在,得到判斷結(jié)果;平衡二叉樹(shù)生成模塊,用于根據(jù)判斷結(jié)果由所述空閑節(jié)點(diǎn)單獨(dú)生成平衡二叉樹(shù),或者由所述空閑節(jié)點(diǎn)插入所述同級(jí)的目錄或文件的節(jié)點(diǎn)生成的平衡二叉樹(shù)中;多級(jí)平衡二叉樹(shù)構(gòu)造模塊,用于根據(jù)平衡規(guī)則對(duì)所有的平衡二叉樹(shù)執(zhí)行平衡操作,生成多級(jí)平tf二叉樹(shù)。該裝置還包括管理模塊,用于依據(jù)所述多級(jí)平衡二叉樹(shù)對(duì)整個(gè)文件系統(tǒng)的目錄進(jìn)行操作管理,所述操作管理為遍歷目錄、查找文件、增加文件、刪除文件、修改文件名稱、移動(dòng)文件中的任意一種或任意多種的組合。所述空閑節(jié)點(diǎn)由FileName、pSubTree、pLeftTree和pRighftTree組成,其中,F(xiàn)ileName的域值依據(jù)所述短名稱取值。所述平銜^見(jiàn)則為依據(jù)所述平!軒二叉杉于中FileName、pLeftTreep和RighftTree域值的大小,對(duì)FileName、pLeftTreep和RighftTree重新賦值。本發(fā)明的目錄管理方法和裝置,采用了多級(jí)平衡二叉樹(shù)技術(shù),根據(jù)客戶端上文件的建立,在元數(shù)據(jù)服務(wù)器中表示文件系統(tǒng)的目錄結(jié)構(gòu)的多級(jí)平衡二叉樹(shù)隨之建立。由于本發(fā)明在多級(jí)平衡二叉樹(shù)中存儲(chǔ)的目錄或文件的名稱使用的是短名稱,即目錄或文件的唯一標(biāo)識(shí)名稱,這樣,極大的節(jié)省了元數(shù)據(jù)服務(wù)器的內(nèi)存空間,有利于存儲(chǔ)更多的目錄或文件名稱。本發(fā)明中多級(jí)平衡二叉樹(shù)的使用,使同級(jí)的目錄或文件的節(jié)點(diǎn)存在于多級(jí)平衡二叉樹(shù)的一個(gè)子樹(shù)中,所以在執(zhí)行平衡操作時(shí),只需平衡對(duì)應(yīng)的子樹(shù),這樣可以簡(jiǎn)化平衡操作,并且縮短了平衡操作的時(shí)間。另外,本發(fā)明采用多級(jí)平衡二叉樹(shù)管理目錄,且每個(gè)目錄或文件只保存短名稱,這樣可以提高整個(gè)目錄的查找效率,并能方便地對(duì)目錄的各種管理操作。圖1為本發(fā)明目錄管理方法的具體流程示意圖2為本發(fā)明目錄管理方法的由一個(gè)節(jié)點(diǎn)生成的平4軒二叉樹(shù)的示例圖3為本發(fā)明創(chuàng)建多級(jí)平衡二叉樹(shù)的示例;圖4為本發(fā)明目錄管理裝置的結(jié)構(gòu)關(guān)系示意圖。具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)一步詳細(xì)闡述。在分布式文件系統(tǒng)中,本發(fā)明依據(jù)目錄或文件的短名稱,創(chuàng)建表示整個(gè)文件系統(tǒng)的目錄結(jié)構(gòu)的多級(jí)平衡二叉樹(shù),在多級(jí)平衡二叉樹(shù)中,同級(jí)的目錄或文件生成一個(gè)平衡二叉樹(shù),所生成的平衡二叉樹(shù)是所述同級(jí)目錄或文件的父目錄所在的平衡二叉樹(shù)的子樹(shù),且父目錄所在平衡二叉樹(shù)的根節(jié)點(diǎn)的子樹(shù)pSubTree指向生成的平衡二叉樹(shù)的子樹(shù)的根節(jié)點(diǎn),根據(jù)目錄層次隸屬關(guān)系,利用節(jié)點(diǎn)的pSubTree域?qū)⒏鱾€(gè)平衡二叉樹(shù)關(guān)聯(lián)起來(lái),從而生成多級(jí)平衡二叉樹(shù)。整個(gè)分布式文件系統(tǒng)中,所有同級(jí)的文件和目錄可以生成一個(gè)平衡二叉樹(shù),在分布式文件系統(tǒng)中,有多少個(gè)目錄或文件的級(jí)別劃分,在元數(shù)據(jù)服務(wù)器中就包含有多少個(gè)對(duì)應(yīng)的平衡二叉樹(shù),這些平衡二叉樹(shù)形成了一個(gè)多級(jí)平衡二叉樹(shù),這個(gè)多級(jí)平衡二叉樹(shù)就表示整個(gè)分布式文件系統(tǒng)的目錄結(jié)構(gòu)。圖1所示為本發(fā)明目錄管理方法的具體流程示意圖。步驟101,對(duì)客戶端輸入的全路徑名稱進(jìn)行分析,得到該全路徑名稱表示的目錄或者文件的短名稱。在分布式文件系統(tǒng)中,用戶通過(guò)客戶端輸入目錄或文件的全路徑名稱,元數(shù)據(jù)服務(wù)器在創(chuàng)建多級(jí)平衡二叉樹(shù)的過(guò)程中,對(duì)全路徑名稱進(jìn)行分析,從全路徑名稱中提:取出目錄或文件的短名稱,該短名稱是目錄或文件的唯一標(biāo)識(shí)名稱,創(chuàng)建該目錄或文件時(shí),只需在對(duì)應(yīng)的節(jié)點(diǎn)中存儲(chǔ)目錄或文件的短名稱即可。步驟l02,依據(jù)目錄或文件的短名稱,給目錄或文件分配一個(gè)空閑節(jié)點(diǎn)。在多級(jí)平衡二叉樹(shù)中創(chuàng)建目錄或文件時(shí),首先給該目錄或文件分配一個(gè)空閑節(jié)點(diǎn),通過(guò)該節(jié)點(diǎn)將當(dāng)前目錄或文件的文件名插入其在多級(jí)平衡二叉樹(shù)中的相應(yīng)的位置。本發(fā)明中,一個(gè)空閑節(jié)點(diǎn)由文件名FileName、子樹(shù)pSubTree、左子樹(shù)pLeftTree和右子樹(shù)pRighftTree組成,具體的空閑節(jié)點(diǎn)的構(gòu)成在后面的實(shí)施例進(jìn)行說(shuō)明。步驟103,判斷與短名稱表示的目錄或文件同級(jí)的目錄或文件是否存在,如果不存在,執(zhí)行步驟104;如果存在,執(zhí)行步驟105。在本發(fā)明中,多級(jí)平衡二叉樹(shù)的實(shí)現(xiàn)特點(diǎn)是同級(jí)的所有目錄或文件生成一個(gè)平衡二叉樹(shù),且生成該平衡二叉樹(shù)的目錄或文件的父目錄的根節(jié)點(diǎn)的pSubTree域均指向該平衡二叉樹(shù)的根節(jié)點(diǎn)。在創(chuàng)建一個(gè)目錄或文件時(shí),要先判斷與該目錄或文件同級(jí)的目錄或文件是否存在,從需要?jiǎng)?chuàng)建目錄或文件的全路徑名稱中可以知道該目錄或文件的父目錄,查找父目錄所在的平衡二叉樹(shù)的根節(jié)點(diǎn)的pSubTree的域值是否為空NULL,如果為空,則說(shuō)明同級(jí)的目錄或文件不存在;如果不為空,則說(shuō)明同級(jí)的目錄或文件存在。步驟104,該目錄或文件的空閑節(jié)點(diǎn)單獨(dú)生成一個(gè)新的平衡二叉樹(shù);這里,該目錄或文件的父目錄所在的平衡二叉樹(shù)的根節(jié)點(diǎn)的pSubTree域指向該平衡二叉樹(shù)的根節(jié)點(diǎn);如果該目錄為多級(jí)平衡二叉樹(shù)的根目錄,對(duì)于一個(gè)平衡二叉樹(shù)來(lái)說(shuō),有且只有一個(gè)根目錄,則根目錄單獨(dú)生成一個(gè)平衡二叉樹(shù),這個(gè)平衡二叉樹(shù)成為整個(gè)文件系統(tǒng)的命名入口,該平衡二叉樹(shù)成為多級(jí)平衡二叉樹(shù)的入口子樹(shù)。步驟105,將目錄或文件的空閑節(jié)點(diǎn)與同級(jí)的目錄或文件的節(jié)點(diǎn)生成一個(gè)平衡二叉樹(shù)。依據(jù)上述多級(jí)平衡二叉樹(shù)的實(shí)現(xiàn)特點(diǎn),將新創(chuàng)建的目錄或文件的空閑節(jié)點(diǎn)插入與其同級(jí)的目錄或文件所生成的平衡二叉樹(shù)中。步驟106,根據(jù)平銜-規(guī)則對(duì)所有的平衡二叉樹(shù)執(zhí)行平衡操作,生成多級(jí)平衡二叉樹(shù)。每當(dāng)創(chuàng)建一個(gè)新的目錄或者文件時(shí),都要對(duì)其所在的最基本的平衡二叉樹(shù)進(jìn)行平衡操作。一個(gè)空閑節(jié)點(diǎn)的結(jié)構(gòu)就是一個(gè)最基本的平衡二叉樹(shù),所謂平衡操作依據(jù)平衡規(guī)則來(lái)執(zhí)行,具體是將一個(gè)最基本的平衡二叉樹(shù)的FileName、pLeftTree和pRighftTree的域值的大小進(jìn)行比較,然后,依據(jù)這三個(gè)域值的大小重新對(duì)FileName、pLeftTree和pRighftTree進(jìn)行賦值。進(jìn)行平衡操作后,一個(gè)最基本的平衡二叉樹(shù)就創(chuàng)建完成了。隨著在客戶端上文件的創(chuàng)建完畢,在元數(shù)據(jù)服務(wù)器中就存在多個(gè)級(jí)別的目錄或文件生成的多個(gè)平衡二叉樹(shù),這些二叉樹(shù)構(gòu)成一個(gè)多級(jí)平衡二叉樹(shù)。步驟107,依據(jù)多級(jí)平衡二叉樹(shù)對(duì)整個(gè)文件系統(tǒng)的目錄進(jìn)行操作管理。這里,所述的操作管理可以是遍歷目錄、查找文件、增加文件、刪除文件、修改文件名稱、移動(dòng)文件操作中的任意一種、或任意幾種的組合。對(duì)于目錄管理方法來(lái)說(shuō),步驟107是可選的。依據(jù)創(chuàng)建好的多級(jí)平衡二叉樹(shù),可以對(duì)整個(gè)文件系統(tǒng)的目錄進(jìn)行管理。下面將通過(guò)具體的實(shí)施例來(lái)說(shuō)明,依據(jù)本發(fā)明的目錄管理方法創(chuàng)建多級(jí)平衡二叉樹(shù)的過(guò)程。創(chuàng)建一個(gè)目錄或文件時(shí)要在多級(jí)平衡二叉樹(shù)中分配與該目錄或文件對(duì)應(yīng)的節(jié)點(diǎn),該節(jié)點(diǎn)可以單獨(dú)地成為一個(gè)平衡二叉樹(shù)。圖2為一個(gè)節(jié)點(diǎn)生成的平衡二叉樹(shù)的示例圖,如圖2所示,該節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)成員包括FileName01、pSubTree02、pLeftTree03和pRighftTree04,表1具體說(shuō)明了節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)成員的含義。<table>tableseeoriginaldocumentpage10</column></row><table>表1本發(fā)明中,左子樹(shù)pSubTree和右子樹(shù)pRightTree表示的目錄或文件是與文件名稱FileName表示的目錄或文件同級(jí)的,子樹(shù)pSubTree所表示的目錄或文件是FileName、pSubTree和pRightTree所表示的目錄或文件的下一級(jí)。在多級(jí)平衡二叉樹(shù)中,同級(jí)的所有目錄或文件可以生成一個(gè)平衡二叉樹(shù),且生成該平衡二叉樹(shù)的目錄或文件的父目錄的根節(jié)點(diǎn)的pSubTree域指向該平衡二叉樹(shù)的根節(jié)點(diǎn)。下面將結(jié)合圖2和圖3,以逐級(jí)創(chuàng)建文件"/home/movie.mpg,,以及文件"/exam.txt"為例,來(lái)說(shuō)明本發(fā)明技術(shù)方案的具體實(shí)現(xiàn)。圖3所示為本發(fā)明創(chuàng)建多級(jí)平衡二叉樹(shù)的示例。在系統(tǒng)運(yùn)行之初,所有的平衡二叉樹(shù)的節(jié)點(diǎn)都是空閑的。隨著在客戶端上文件的創(chuàng)建,元數(shù)據(jù)服務(wù)器中的多級(jí)平衡二叉樹(shù)隨之開(kāi)始創(chuàng)建。在開(kāi)始創(chuàng)建文件之初,要先創(chuàng)建一個(gè)根目錄7",在多級(jí)平衡二叉樹(shù)中根目錄有且只有一個(gè),所以根目錄獨(dú)立生成一個(gè)平衡二叉樹(shù),這個(gè)平衡二叉樹(shù)就成為整個(gè)系統(tǒng)文件的命名空間入口,被稱為多級(jí)平衡二叉樹(shù)的入口子樹(shù)。具體地,創(chuàng)建根目錄'7",此時(shí)平衡二叉樹(shù)的所有節(jié)點(diǎn)均為空閑,從起始處分配一個(gè)空閑節(jié)點(diǎn)10,其內(nèi)容為FileName='7",pSubTree=NULL,pLeftTree=NULL,pRightTree=NULL,則節(jié)點(diǎn)10所在的平衡二叉樹(shù)就是多級(jí)平衡二叉樹(shù)的入口子樹(shù)。創(chuàng)建根目錄的下級(jí)目錄"/home",分配一個(gè)空閑節(jié)點(diǎn)11,那么其內(nèi)容為FileName="home",pSubTree=NULL,pLeftTree=NULL,pRightTree=NULL??梢杂赡夸?/home"的名稱得到,該目錄的父目錄為根目錄"/",此時(shí),因?yàn)楦夸浰诘钠胶舛鏄?shù)還不存在子樹(shù),所以不存在與"home"同級(jí)的文件,那么,目錄"/home"暫時(shí)獨(dú)立生成一個(gè)平tf二叉^",則節(jié)點(diǎn)ll所在的平tf二叉樹(shù)是節(jié)點(diǎn)10所在的平衡二叉樹(shù)的子樹(shù)。由于節(jié)點(diǎn)11表示的是目錄"/home",所以,此時(shí)需要將節(jié)點(diǎn)11的pSubTree指向目錄"/home,,的下一級(jí)目錄所生成的平衡二叉樹(shù)的根節(jié)點(diǎn),由圖3可知,該節(jié)點(diǎn)為12。創(chuàng)建文件"/exam.txt",由該文件的文件名可以得知,文件"exam.txt"的父目錄為根目錄7",而根目錄的平衡二叉樹(shù)的根節(jié)點(diǎn)10的pSubTree已經(jīng)指向節(jié)點(diǎn)11,這i兌明存在與文件"/exam.txt"同級(jí)的目錄或文件,即目錄"/home"。那么,找到節(jié)點(diǎn)11所在的平衡二叉樹(shù),即目錄"/home"所在的平衡二叉樹(shù),分配一個(gè)空閑的節(jié)點(diǎn)用來(lái)表示文件7exam.txt",內(nèi)容為FileName="exam.txt",pSubTree=NULL,pLeftTree-NULL,pRightTree=NULL,將該節(jié)點(diǎn)插入到目錄"/home"所在的平衡二叉樹(shù)中,對(duì)于將該節(jié)點(diǎn)插入到平衡二叉樹(shù)的左子樹(shù)還是右子樹(shù)中,沒(méi)有特別的規(guī)定,所以對(duì)于本實(shí)施例,該節(jié)點(diǎn)既可以是14也可以是15,本實(shí)施例中以7exam.txt"為節(jié)點(diǎn)14為例。接著,依據(jù)平衡規(guī)則,對(duì)文件'7exam.txt"和目錄'7home"所在的平衡二叉樹(shù)進(jìn)行平衡操作,具體地,可以這樣來(lái)制定平衡規(guī)則對(duì)于一個(gè)最簡(jiǎn)單的平衡二叉樹(shù),將其當(dāng)前的FileName、pLeftTree和pRightTree的域值進(jìn)行比較,比較后對(duì)FileName、pLeftTree和pRightTree重新進(jìn)行賦值,賦值后三者的域值大小關(guān)系為,pLeftTree<FileName<pRightTree。比豐交FileName、pLeftTree和pRightTree的域值的方法為其域值的本質(zhì)是由一個(gè)字符串構(gòu)成的,每個(gè)字符在計(jì)算才幾中都有一個(gè)對(duì)應(yīng)的且唯一的ASCII碼,如A的ASCII碼為65,B的ASCII碼為66,a的ASCII碼為97,b的ASCII碼為98,那么這四個(gè)字符的大小順序?yàn)閎<a<B<A,按照域值所包含的字符的順序進(jìn)行比較,先比較第一個(gè)字符的ASCII碼,如果第一個(gè)字符的ASCII碼相等,那么比較第二個(gè)字符的ASCII碼直到比較出大小為止,當(dāng)然平衡操作的規(guī)則不僅限于此。在本實(shí)施例中,假設(shè)先將文件"/exam.txt"的節(jié)點(diǎn)插入目錄"/home"所在平衡二叉樹(shù)的右子樹(shù),即,將"exam.txt"賦值給pRightTree15,接下來(lái),比較FileName11的i或4直"home"和pRightTree15的M/f直"exam.txt"的大小,h的ASCII碼為104,e的ASCII碼為101,即e<h,則exam.txt<home,沖艮據(jù)重新賦值后,pLeftTree<FileName<pRightTree的原則,因?yàn)镕ileName11的域值已經(jīng)是"home",pLeftTree14為NULL,那么"exam.txt"應(yīng)該賦值給pLeftTree14。創(chuàng)建文件"/log.txt",其創(chuàng)建的過(guò)程同文件7exam.txt",此處不再贅述。分配空閑節(jié)點(diǎn)15用來(lái)表示文件"/log.txt",內(nèi)容為FileName="log.txt",pSubTree^NULL,pLeftTree二NULL,pRightTree^NULL,將其插入到目錄"/home"和文件"/exam.txt"生成的平衡二叉樹(shù)中。依據(jù)平衡-規(guī)則,對(duì)此平衡二叉樹(shù)執(zhí)4亍平衡才喿作,由于經(jīng)比4交exam.txt〈home〈log.txt,那么"log.txt"應(yīng)該貝武^f直纟會(huì)該平衡二叉樹(shù)的pRightTree15,"home"應(yīng)該賦值給該平衡二叉樹(shù)的pRightTree11,"exam.txt"應(yīng)該賦值給該平衡二叉樹(shù)的pRightTree14。由于節(jié)點(diǎn)14"/exam.txt,,和節(jié)點(diǎn)15"log.txt"為文件,所以,兩者的pSubTree16和17為NULL,即不存在。假設(shè),用文件"/a.exe"來(lái)替換當(dāng)前創(chuàng)建的文件"/log.txt",那么給"/a.exe"分配一個(gè)空閑節(jié)點(diǎn)15,插入到目錄"/home"和文件"/exam.txt"生成的平衡二叉樹(shù)中后,經(jīng)過(guò)比4交,得到a.exe<exam.txt<home,那么該平衡二叉樹(shù)pLeftTree14、FileName11和pRightTree15的域值重新M/f直后,為pLeftTree=a.exe,FileName=exam.txt、pRightTree=home。創(chuàng)建文件"/home/movie.mpg",由該文件的文件名可以得知,該文件的父目錄為"/home",由于"/home"所在的平衡二叉樹(shù)的根節(jié)點(diǎn)11的pSubTree域還不存在,所以需要分配空閑節(jié)點(diǎn)12,新建立一個(gè)平衡二叉樹(shù),則該平衡二叉樹(shù)是節(jié)點(diǎn)11所在的平衡二叉樹(shù)的子樹(shù)。節(jié)點(diǎn)12為該平衡二叉樹(shù)的根節(jié)點(diǎn),該節(jié)點(diǎn)的內(nèi)容為FileName="movie.mpg",pSubTree=NULL,pLeftTree-NULL,pRightTree=NULL,因?yàn)?/home/movie.mpg"是一個(gè)文件,所以節(jié)點(diǎn)12的pSubTree13為NULL。從本實(shí)施例可以看出,節(jié)點(diǎn)11、14、15所表示的目錄或文件都是根目錄"/,,12200810126859.1的下一級(jí),即這三者是同級(jí)的,所以這三個(gè)同級(jí)的目錄或文件構(gòu)成一個(gè)平衡二叉樹(shù),且節(jié)點(diǎn)11、14、15所表示的目錄或文件的父目錄,即4艮目錄'7"所在的二叉樹(shù)的根節(jié)點(diǎn)10的pSubTree是指向節(jié)點(diǎn)11、14、15生成的平衡二叉樹(shù)的根節(jié)點(diǎn)11的,即節(jié)點(diǎn)11所在的平衡二叉樹(shù)是節(jié)點(diǎn)IO所在的平衡二叉樹(shù)的子樹(shù)。下面將通過(guò)幾個(gè)實(shí)施例來(lái)說(shuō)明,基于本發(fā)明多級(jí)平衡二叉樹(shù)對(duì)整個(gè)文件系統(tǒng)的目錄進(jìn)行管理4喿作的具體實(shí)現(xiàn)過(guò)程。操作一文件查找操作。文件查找操作包括以下步驟步驟ll,分析用戶通過(guò)客戶端輸入的文件全路徑名稱,從全路徑名稱中讀取出第一個(gè)名稱。如'7A/b/123.exe"中第一個(gè)'7,,;步驟12~13,從多級(jí)平衡二叉樹(shù)的入口子樹(shù)搜索步驟11得到的名稱所對(duì)應(yīng)的節(jié)點(diǎn),如果步驟12查找不到相應(yīng)的節(jié)點(diǎn),則出4昔,結(jié)束當(dāng)前處理流程,如果步驟12找到相應(yīng)的節(jié)點(diǎn),則執(zhí)行步驟14;步驟14,繼續(xù)從全路徑名稱中讀取下一個(gè)名稱,如7A/b/123.exe,,中的"A,,;步驟15,從步驟12得到的節(jié)點(diǎn)所在平衡二叉樹(shù)對(duì)應(yīng)的子樹(shù)中繼續(xù)查找步驟14的名稱對(duì)應(yīng)的節(jié)點(diǎn);步驟16,如果步驟15不能找到相應(yīng)節(jié)點(diǎn),則出錯(cuò);如果沒(méi)有出錯(cuò),則繼續(xù)分析全路徑名稱,直到分析完畢;步驟17,返回最后得到的節(jié)點(diǎn)。操作二增加文件操作。增加文件操作包括以下步驟步驟21,利用文件查找操作查找需要增加的文件對(duì)應(yīng)的節(jié)點(diǎn);步驟22,如果能夠找到,則出錯(cuò),結(jié)束當(dāng)前處理過(guò)程;如果沒(méi)有找到,則執(zhí)行步驟23;步驟23,分析用戶通過(guò)客戶端輸入的需要增加的文件的全路徑名稱,得到需增加的文件的父目錄;步驟24,利用文件查找操作查找步驟23得到的父目錄對(duì)應(yīng)的節(jié)點(diǎn);步驟25,如果步驟24找不到相應(yīng)的節(jié)點(diǎn),則出錯(cuò),結(jié)束當(dāng)前處理過(guò)程;如果步驟24找到的節(jié)點(diǎn)表示的不是目錄,則出錯(cuò),結(jié)束當(dāng)前處理過(guò)程;如果步驟24找到的節(jié)點(diǎn)的pSubTree為空,則建立一個(gè)新的節(jié)點(diǎn),填入需要增加文件的信息,如文件名7A/b/123.exe"中的"123.exe",設(shè)置父目錄對(duì)應(yīng)的節(jié)點(diǎn)與新節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系,即將父目錄節(jié)點(diǎn)的pSubTree指向新節(jié)點(diǎn);如果步驟24找到的節(jié)點(diǎn)對(duì)應(yīng)的pSubTree不為空,則在此節(jié)點(diǎn)所在的平衡二叉樹(shù)中增加一個(gè)新的節(jié)點(diǎn),填入需增加的文件的相關(guān)信息。操作三刪除文件操作。刪除文件^搡作包^"以下步驟步驟31,利用文件查找操作查找需要?jiǎng)h除的文件對(duì)應(yīng)的節(jié)點(diǎn);步驟32,如果不能找到節(jié)點(diǎn),則出錯(cuò),結(jié)束當(dāng)前處理過(guò)程;如果找到節(jié)點(diǎn),分析需刪除的文件的全路徑名稱,得到該文件的父目錄;步驟33,查找父目錄對(duì)應(yīng)節(jié)點(diǎn)所在的平衡二叉樹(shù);步驟34,如果步驟33得到父目錄對(duì)應(yīng)節(jié)點(diǎn)的平衡二叉樹(shù),則從該平衡二叉樹(shù)中刪除指定文件對(duì)應(yīng)的節(jié)點(diǎn),即將此節(jié)點(diǎn)設(shè)置為NULL。操作四文件名稱修改操作。文件名稱修改揭:作包括以下步驟步驟41,利用文件查找操作查找需要修改名稱的文件對(duì)應(yīng)的節(jié)點(diǎn);步驟42,如果不能找到,則出錯(cuò),結(jié)束當(dāng)前處理過(guò)程;如果能找到,則利用文件查找操作查找將該文件修改名稱后的文件對(duì)應(yīng)的節(jié)點(diǎn);步驟43,如果能找到,則出錯(cuò),結(jié)束當(dāng)前處理過(guò)程;否則,修改步驟41所找到的節(jié)點(diǎn)中文件的名稱;步驟44,對(duì)該節(jié)點(diǎn)所在的平衡二叉樹(shù)進(jìn)行平衡操作。操作五文件移動(dòng)操作文件移動(dòng)操作包括以下步驟步驟51,利用文件查找操作查找需要移動(dòng)的文件對(duì)應(yīng)的節(jié)點(diǎn);步驟52,如果不能找到,則出錯(cuò),結(jié)束當(dāng)前處理過(guò)程;如果能找到,則利用文件查找操作查找文件移動(dòng)后該文件對(duì)應(yīng)的節(jié)點(diǎn);步驟53,如果能找到,則出4昔,結(jié)束當(dāng)前處理過(guò)程;如果能找到,則分析需要移動(dòng)的文件的全路徑名稱,得到該文件的父目錄;步驟54,利用文件查找操作查找步驟53得到的父目錄對(duì)應(yīng)的節(jié)點(diǎn);步驟55,將當(dāng)前需移動(dòng)的文件移動(dòng)到目的地址;步驟56,分析文件移動(dòng)后文件的全^^徑名稱,得到文件移動(dòng)后的該文件的父目錄;步驟57,利用文件查找操作查找步驟56得到的父目錄對(duì)應(yīng)的節(jié)點(diǎn);步驟58,如果步驟57找不到對(duì)應(yīng)的節(jié)點(diǎn),則返回錯(cuò)誤,結(jié)束當(dāng)前處理過(guò)程;如果步驟57找到對(duì)應(yīng)的節(jié)點(diǎn),則備份步驟51得到的節(jié)點(diǎn);步驟59,刪除步驟51得到的節(jié)點(diǎn);步驟60,將步驟58備份的節(jié)點(diǎn)加入步驟58得到節(jié)點(diǎn)所在的平衡二叉樹(shù)對(duì)應(yīng)的子樹(shù)之中。操作六遍歷目錄操作。遍歷目錄操作包括以下步驟步驟61,利用文件查找操作查找輸入的目錄名稱對(duì)應(yīng)的節(jié)點(diǎn),如目錄7A";步驟62,如果步驟61中找到的節(jié)點(diǎn)為空,則返回目錄不存在,結(jié)束當(dāng)前處理過(guò)程;如果步驟61找到的節(jié)點(diǎn)不為空,取出步驟61找到節(jié)點(diǎn)所在的平衡二叉樹(shù)的子樹(shù),如目錄7A"節(jié)點(diǎn)所在的平衡二叉樹(shù)的子樹(shù);步驟63,如果步驟62得到的子樹(shù)為空,則直接返回;如果步驟62得到的子樹(shù)不為空,則遍歷該子^",返回遍歷結(jié)果。為實(shí)現(xiàn)上述目錄管理方法,本發(fā)明還提供了一種目錄管理裝置,圖4所示為本發(fā)明目錄管理裝置的結(jié)構(gòu)關(guān)系示意圖,本發(fā)明的目錄管理裝置結(jié)構(gòu)包括分析模塊41,用于對(duì)全路徑名稱進(jìn)行分析,得到所述全路徑名稱表示的目錄或者文件的短名稱。這里,在多級(jí)平衡二叉樹(shù)中只存儲(chǔ)目錄或文件的短名稱,短名稱是目錄或文件的唯一標(biāo)識(shí)名稱。節(jié)點(diǎn)分配模塊42,用于依據(jù)所述短名稱,為所述短名稱表示的目錄或文件分配一個(gè)空閑節(jié)點(diǎn)。其中,空閑節(jié)點(diǎn)由FileName、pSubTree、pLeftTree和pRighftTree組成,其中,F(xiàn)ileName的域值由依據(jù)所述短名稱取值。當(dāng)所述空閑節(jié)點(diǎn)表示目錄時(shí),pSubTree指向所述目錄的下一級(jí)目錄所在的平衡二叉樹(shù)的根節(jié)點(diǎn),所述目錄所在的平衡二叉樹(shù)的子樹(shù)是所示下一級(jí)目錄所在的平衡二叉樹(shù);當(dāng)所述空閑節(jié)點(diǎn)表示文件時(shí),pSubTree為空NULL,即不存在。是否存在,并得到判斷結(jié)果。一般,判斷結(jié)果有兩種存在與短名稱表示的目錄或文件同級(jí)的目錄或文平衡二叉樹(shù)生成模塊44,用于根據(jù)判斷結(jié)果由所述空閑節(jié)點(diǎn)單獨(dú)生成一個(gè)平衡二叉樹(shù),或者由所述空閑節(jié)點(diǎn)插入所述同級(jí)的目錄或文件的節(jié)點(diǎn)生成的平衡二叉樹(shù)中。多級(jí)平衡二叉樹(shù)構(gòu)造模塊45,用于根據(jù)平衡規(guī)則對(duì)所有的平衡二叉樹(shù)執(zhí)行平衡操作,生成多級(jí)平衡二叉樹(shù)。這里,所述生成多級(jí)平衡二叉樹(shù)具體為根據(jù)目錄層次隸屬關(guān)系,利用節(jié)點(diǎn)的pSubTree域?qū)⒏鱾€(gè)平衡二叉樹(shù)關(guān)聯(lián)起來(lái),從而生成多級(jí)平衡二叉樹(shù)。本發(fā)明的裝置還可以進(jìn)一步包括一個(gè)管理模塊,用于依據(jù)所述多級(jí)平衡二叉樹(shù)對(duì)整個(gè)文件系統(tǒng)的目錄進(jìn)行遍歷目錄、查找文件、增加文件、刪除文件、修改文件名稱、移動(dòng)文件操作管理。所述管理模塊對(duì)目錄進(jìn)行管理時(shí),是基于多級(jí)平衡二叉樹(shù)的,會(huì)與多級(jí)平衡二叉樹(shù)構(gòu)造模塊45有信息交互;對(duì)目錄進(jìn)行上述幾種操作管理時(shí),都需要先對(duì)目錄或文件的全路徑名稱進(jìn)行分析,所以還會(huì)與分析模塊41之間進(jìn)行信息交互;對(duì)目錄進(jìn)行增加文件時(shí)需要對(duì)文件分配新的空閑節(jié)點(diǎn)時(shí),還需要與節(jié)點(diǎn)分配模塊42進(jìn)行信息交互。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。權(quán)利要求1、一種目錄管理方法,在客戶端創(chuàng)建目錄或文件,并輸入目錄或文件的全路徑名稱,將所述全路徑名稱發(fā)送給元數(shù)據(jù)服務(wù)器,其特征在于,該方法包括對(duì)所述全路徑名稱進(jìn)行分析,得到所述全路徑名稱表示的目錄或文件的短名稱;依據(jù)所述短名稱,為所述短名稱表示的目錄或文件分配空閑節(jié)點(diǎn);判斷與所述短名稱表示的目錄或文件的同級(jí)目錄或文件是否存在,如果不存在,則所述空閑節(jié)點(diǎn)單獨(dú)生成平衡二叉樹(shù);如果存在,則將所述空閑節(jié)點(diǎn)插入所述同級(jí)目錄或文件的節(jié)點(diǎn)生成的平衡二叉樹(shù)中;根據(jù)平衡規(guī)則對(duì)所有的平衡二叉樹(shù)執(zhí)行平衡操作,生成多級(jí)平衡二叉樹(shù);并依據(jù)所述生成的多級(jí)平衡二叉樹(shù)對(duì)目錄進(jìn)行管理。2、根據(jù)權(quán)利要求1所述目錄管理方法,其特征在于,所述短名稱為所述目錄或文件的p舉一標(biāo)識(shí)名稱。3、根據(jù)權(quán)利要求1所述目錄管理方法,其特征在于,所述空閑節(jié)點(diǎn)由文件名FileName、子杉于pSubTree、左子樹(shù)pLeftTree和右子初于pRighftTree組成,其中,F(xiàn)ileName的域值依據(jù)所述短名稱取值;所述空閑節(jié)點(diǎn)表示目錄時(shí),pSubTree指向所述目錄的下一級(jí)目錄所在的平衡二叉樹(shù)的根節(jié)點(diǎn),所述目錄所在的平衡二叉樹(shù)的子樹(shù)是所述下一級(jí)目錄所在的平衡二叉樹(shù);所述空閑節(jié)點(diǎn)表示文件時(shí),pSubTree為空NULL。4、根據(jù)權(quán)利要求1所述目錄管理方法,其特征在于,所述平衡規(guī)則為依據(jù)所述平衡二叉樹(shù)中FileName、pLeftTreep和RighftTree域值的大小,對(duì)FileName、pLeftTreep和RighftTree重新賦值。5、根據(jù)權(quán)利要求1所述目錄管理方法,其特征在于,所述依據(jù)多級(jí)平衡二叉樹(shù)對(duì)整個(gè)文件系統(tǒng)的目錄進(jìn)行管理,包括遍歷目錄、查找文件、增加文件、刪除文件、修改文件名稱、移動(dòng)文件中的任意一種或任意多種的組合。6、一種目錄管理裝置,其特征在于,該裝置包括分析模塊,用于對(duì)全路徑名稱進(jìn)行分析,得到所述全路徑名稱表示的目錄或者文件的短名稱;節(jié)點(diǎn)分配模塊,用于依據(jù)所述短名稱,為所述短名稱表示的目錄或文件分配空閑節(jié)點(diǎn);否存在,得到判斷結(jié)果;平衡二叉樹(shù)生成模塊,用于根據(jù)判斷結(jié)果由所述空閑節(jié)點(diǎn)單獨(dú)生成平衡二叉樹(shù),或者由所述空閑節(jié)點(diǎn)插入所述同級(jí)的目錄或文件的節(jié)點(diǎn)生成的平衡二叉樹(shù)中;多級(jí)平衡二叉樹(shù)構(gòu)造模塊,用于根據(jù)平衡規(guī)則對(duì)所有的平衡二叉樹(shù)執(zhí)行平衡操作,生成多級(jí)平衡二叉樹(shù)。7、根據(jù)權(quán)利要求6所述目錄管理裝置,其特征在于,該裝置還包括管理模塊,用于依據(jù)所述多級(jí)平衡二叉樹(shù)對(duì)整個(gè)文件系統(tǒng)的目錄進(jìn)行操作管理,所述操作管理為遍歷目錄、查找文件、增加文件、刪除文件、修改文件名稱、移動(dòng)文件中的任意一種或任意多種的組合。8、根據(jù)權(quán)利要求6或7所述目錄管理裝置,其特征在于,所述空閑節(jié)點(diǎn)由FileName、pSubTree、pLeftTree和pRighftTree組成,其中,F(xiàn)ileName的域值依據(jù)所述短名稱取值。9、根據(jù)權(quán)利要求6或7所述目錄管理裝置,其特征在于,所述平衡規(guī)則為依據(jù)所述平ff二叉樹(shù)中FileName、pLeftTreep和RighftTree域值的大小,對(duì)FileName、pLeftTreep和RighftTree重新f武^直。全文摘要本發(fā)明公開(kāi)了一種目錄管理方法,在客戶端上創(chuàng)建目錄或文件,輸入目錄或文件的全路徑名稱,該方法包括對(duì)全路徑名稱進(jìn)行分析,得到全路徑名稱表示的目錄或者文件的短名稱;依據(jù)短名稱,為短名稱表示的目錄或文件分配一個(gè)空閑節(jié)點(diǎn);判斷與短名稱表示的目錄或文件同級(jí)的目錄或文件是否存在;如果不存在,則空閑節(jié)點(diǎn)單獨(dú)生成一個(gè)平衡二叉樹(shù);如果存在,則將所述空閑節(jié)點(diǎn)插入所述同級(jí)目錄或文件的節(jié)點(diǎn)生成的平衡二叉樹(shù)中;根據(jù)平衡規(guī)則對(duì)所有的平衡二叉樹(shù)執(zhí)行平衡操作,生成多級(jí)平衡二叉樹(shù);并依據(jù)所述生成的多級(jí)平衡二叉樹(shù)對(duì)目錄進(jìn)行管理。本發(fā)明還公開(kāi)了一種目錄管理裝置,基于該方法和裝置,可以節(jié)省系統(tǒng)的內(nèi)存空間,提高對(duì)目錄或文件的查找效率。文檔編號(hào)G06F17/30GK101315640SQ200810126859公開(kāi)日2008年12月3日申請(qǐng)日期2008年7月1日優(yōu)先權(quán)日2008年7月1日發(fā)明者朱紅軍,杜守富,王瑞豐申請(qǐng)人:中興通訊股份有限公司