專利名稱:一種目錄存儲和映射方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及目錄存儲和映射技術,特別是在多個虛擬環(huán)境和本地操作系統(tǒng)中的對目錄進行存儲和在它們之間進行目錄映射的方法及系統(tǒng)。
背景技術:
隨著計算機技術的發(fā)展,操作系統(tǒng)中存儲的目錄數(shù)量普遍增長較快。當某個操作系統(tǒng)中存在大量的目錄時,如何存儲和管理這些目錄信息成為一大問題?,F(xiàn)有技術中常見的一種方式是將系統(tǒng)中的所有目錄信息以原始路徑信息的方式直接存儲,即存儲大量例如“C: \windows\winsxs\catalog”、“C: \windows\system”之類的表示路徑的字符串。但顯而易見的,這樣的存儲方式造成了大量存儲空間的浪費,例如上述兩個原始路徑信息字符串的例子中,“C:\wind0ws\”這些相同的字符串就浪費了很多存儲空間。由于操作系統(tǒng)中的原始路徑信息字符串存在大量的重復字符,因此,浪費的存儲空間將會達到驚人的數(shù)量。此夕卜,還存在需要將多個系統(tǒng)中的路徑信息進行存儲的情境,例如同時存在本地真實操作系 統(tǒng)和多個虛擬環(huán)境的情況下,對路徑信息的存儲空間需求將會加倍的增長。因此,對于存儲空間緊張的情境下,現(xiàn)有的存儲方式已不能滿足需求。現(xiàn)有技術中對于某一目錄的尋址,通常采用對其原始路徑信息字符串全文匹配的方式來進行。例如要尋找目錄“C: \windows\winsxs\catalog”,則需要在已存儲的包括所有的原始路徑信息的全部字符串中去全文匹配“C: \windows\winsxs\catalog”。顯然這種匹配的速度是相當慢的,難以滿足高速處理的需要?,F(xiàn)有技術中對于不同系統(tǒng)環(huán)境之間的目錄映射,通常采用的是建立靜態(tài)的目錄映射表,將每個源系統(tǒng)中的目錄的原始路徑信息映射為目標系統(tǒng)中的目錄的原始路徑信息,從前述的現(xiàn)有技術可以知道,這將導致存儲空間浪費巨大,速度低下。當存在多個虛擬環(huán)境和本地操作系統(tǒng)中的目錄需要相互映射時,這樣的目錄映射表將會加倍擴大,這個問題將會體現(xiàn)地尤為嚴重。本文中所述的多個系統(tǒng)、源系統(tǒng)、目標系統(tǒng)均不限于真實的操作系統(tǒng)或者是虛擬的環(huán)境,只要是存在目錄信息需要存儲或者映射的軟件環(huán)境,均可以作為本發(fā)明中的上述系統(tǒng)的任何一個。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提出一種目錄的存儲和映射方法及系統(tǒng),能夠提聞目錄存儲的空間利用率,提高目錄映射的速度。為達到上述目的,本發(fā)明提出技術方案如下一種目錄存儲方法,其特征在于包括以下步驟101、獲取輸入的一個原始路徑信息;102、將所述原始路徑信息依據(jù)路徑分隔符分解成至少一個目錄名;103、由根目錄的目錄名開始判斷,是否該根目錄名已經(jīng)存入根目錄節(jié)點中,若是則針對其子目錄的目錄名繼續(xù)判斷是否已存入子目錄節(jié)點中,若是未存儲過的新目錄名則;104、分配新目錄節(jié)點的存儲空間,將該目錄名存入目錄節(jié)點;105、設置該目錄節(jié)點的父目錄指針,指向其父目錄節(jié)點;106、設置該目錄節(jié)點的同級目錄指針,使得該目錄節(jié)點與其同級目錄節(jié)點構成為一顆平衡二叉樹;107、設置該目錄節(jié)點的父目錄節(jié)點的子節(jié)點指針,指向該目錄節(jié)點所在平衡二叉樹的樹根位置的目錄節(jié)點;108、繼續(xù)跳回步驟103直至判斷完該原始路徑信息包括的末級子目錄的目錄名;109、繼續(xù)跳回步驟101獲取下一個原始路徑信息,直至全部原始路徑信息都處理完畢;·110、在多個系統(tǒng)的路徑信息都存儲完畢之后,在每個目錄節(jié)點中設置其映射目錄指針指向該目錄節(jié)點在其他系統(tǒng)中對應的目錄節(jié)點。其中的同級目錄指針包括同級左指針和同級右指針。其中映射目錄指針包括至少一個指針,分別指向至少一個目標系統(tǒng)中的對應目錄節(jié)點。本發(fā)明還提出了一種目錄存儲系統(tǒng),其特征在于包括路徑分解模塊,用于獲取輸入的一個原始路徑信息,將所述原始路徑信息依據(jù)路徑分隔符分解成至少一個目錄名;存儲分配模塊,用于由根目錄的目錄名開始判斷,是否該根目錄名已經(jīng)存入根目錄節(jié)點中,若是則針對其子目錄的目錄名繼續(xù)判斷是否已存入子目錄節(jié)點中,若是未存儲過的新目錄名則;分配新目錄節(jié)點的存儲空間,將該目錄名存入目錄節(jié)點;指針設置模塊,用于設置該目錄節(jié)點的父目錄指針,指向其父目錄節(jié)點;設置該目錄節(jié)點的同級目錄指針,使得該目錄節(jié)點與其同級目錄節(jié)點構成為一顆平衡二叉樹;設置該目錄節(jié)點的父目錄節(jié)點的子節(jié)點指針,指向該目錄節(jié)點所在平衡二叉樹的樹根位置的目錄節(jié)點;映射設置模塊,用于當路徑分解模塊、存儲分配模塊以及指針設置模塊將全部原始路徑信息都處理完畢時,在多個系統(tǒng)的路徑信息都存儲完畢之后,在每個目錄節(jié)點中設置其映射目錄指針指向該目錄節(jié)點在其他系統(tǒng)中對應的目錄節(jié)點。本發(fā)明還提出了一種目錄映射方法,其特征在于包括以下步驟201、獲取輸入的源系統(tǒng)中的原始路徑信息;202、將所述原始路徑信息依據(jù)路徑分隔符分解成至少一個目錄名;203、由分解得到的根目錄名開始判斷,是否與根目錄節(jié)點的目錄名相同;如果相同則比較分解得到的下一級子目錄名與子目錄節(jié)點的目錄名是否相同;如果分解得到的目錄名與目錄節(jié)點中存儲的目錄名不相同,則在該目錄節(jié)點的同級目錄節(jié)點構成的平衡二叉樹中查找具有該目錄名的目錄節(jié)點;通過逐級目錄判斷,尋址到該原始路徑信息分解得到的末級子目錄的目錄名對應的目錄節(jié)點;204、從該原始路徑信息分解得到的末級子目錄的目錄名對應的目錄節(jié)點中獲取映射目錄指針,尋址到該目錄節(jié)點在目標系統(tǒng)中對應的目錄節(jié)點;
205、通過目標系統(tǒng)中對應的目錄節(jié)點獲取其父目錄指針,逐級尋址到其父目錄節(jié)點直至根目錄節(jié)點;206、在目標系統(tǒng)中根據(jù)父目錄指針尋址找到的目錄節(jié)點形成了一個鏈,將各目錄節(jié)點的目錄名通過目錄分隔符串聯(lián)起來,即得到在目標系統(tǒng)中的原始路徑信息;207、輸出目標系統(tǒng)中的原始路徑信息。其中的同級目錄指針包括同級左指針和同級右指針。其中映射目錄指針包括至少一個指針,分別指向至少一個目標系統(tǒng)中的對應目錄節(jié)點。 本發(fā)明還提出了一種目錄映射系統(tǒng),其特征在于,包括路徑分解模塊,用于獲取輸入的源系統(tǒng)中的原始路徑信息;將所述原始路徑信息依據(jù)路徑分隔符分解成至少一個目錄名;節(jié)點查找模塊,用于由分解得到的根目錄名開始判斷,是否與根目錄節(jié)點的目錄名相同;如果相同則比較分解得到的下一級子目錄名與子目錄節(jié)點的目錄名是否相同;如果分解得到的目錄名與目錄節(jié)點中存儲的目錄名不相同,則在該目錄節(jié)點的同級目錄節(jié)點構成的平衡二叉樹中查找具有該目錄名的目錄節(jié)點;通過逐級目錄判斷,尋址到該原始路徑信息分解得到的末級子目錄的目錄名對應的目錄節(jié)點;映射尋址模塊,用于從該原始路徑信息分解得到的末級子目錄的目錄名對應的目錄節(jié)點中獲取映射目錄指針,尋址到該目錄節(jié)點在目標系統(tǒng)中對應的目錄節(jié)點;通過目標系統(tǒng)中對應的目錄節(jié)點獲取其父目錄指針,逐級尋址到其父目錄節(jié)點直至根目錄節(jié)點;路徑輸出模塊,用于將目標系統(tǒng)中根據(jù)父目錄指針尋址找到的目錄節(jié)點形成了一個鏈,將各目錄節(jié)點的目錄名通過目錄分隔符串聯(lián)起來,即得到在目標系統(tǒng)中的原始路徑信息;輸出目標系統(tǒng)中的原始路徑信息。
圖I為本發(fā)明中的目錄節(jié)點構成示意2為本發(fā)明中的“windows”目錄節(jié)點構成示意3為本發(fā)明中的目錄節(jié)點關系不意圖
具體實施例方式本發(fā)明提供了一種目錄存儲系統(tǒng)。該系統(tǒng)包括,目錄節(jié)點,以及對應目錄節(jié)點之間的指針指向關系以及映射關系。每一目錄節(jié)點的數(shù)據(jù)包括有目錄名,父目錄指針,子目錄指針,同級目錄指針,映射目錄指針。目錄名即為原始路徑信息中被路徑分隔符分開的各段字符串。這里的路徑分隔符可以是“\”,也可以是“/”,或者其他的符號被操作系統(tǒng)用于分隔目錄,視不同的操作系統(tǒng)而不同。例如原始路徑信息可以是例如“C: \windows\winsxs\catalog”之類的字符串,其中包括的目錄名有 “C: ”、“windows”、“winsxs”、“catalog”。父目錄指針指向該目錄節(jié)點的父目錄節(jié)點。例如,目錄節(jié)點“windows”的父目錄指針是指向目錄節(jié)點“C: ”的。由于目錄節(jié)點“C: ”是根目錄沒有父目錄,因此其父目錄指針為空。
同級目錄指針通常用于存在至少兩個同級目錄存在的情況。例如當目錄“C:”下,存在三個同級目錄,即“wind0WS”、“piOgram”、“Zip”時。同級目錄的各個節(jié)點是以平衡二叉樹的方式組織存儲的,所以對于每個目錄節(jié)點其同級目錄指針為兩個,即同級左指針和同級右指針,同級左指針指向位于該目錄節(jié)點左側分支的目錄節(jié)點,同級右指針指向位于該目錄節(jié)點右側分支的目錄節(jié)點,如果當某個目錄節(jié)點位于樹的末端不再有左側和/或右側分支節(jié)點時,將其相應的指針設置為空。每個目錄節(jié)點的目錄名作為鍵值,同級目錄的節(jié)點間按這個鍵值有序左節(jié)點<根節(jié)點<右節(jié)點。例如,“windows”目錄節(jié)點的左分支節(jié)點可能是與其同級的目錄節(jié)點“program”,右分支節(jié)點可能是與其同級的目錄節(jié)點“zip”。在添加新目錄節(jié)點和刪除已 有目錄節(jié)點的過程中,通過調(diào)整,動態(tài)保持二叉樹的平衡性,即對于樹中的每個節(jié)點,其左子樹和右子樹的高度差絕對值不大于I。維持平衡二叉樹的特性,保證同級目錄的查找復雜度為O(Ign)。子目錄指針用于指向該目錄節(jié)點的子目錄節(jié)點。當然如果該目錄節(jié)點的子目錄有至少兩個的時候,這些子目錄之間也為同級目錄,是以平衡二叉樹的方式組織存儲的。該目錄節(jié)點的子目錄指針則指向位于平衡二叉樹的樹根位置的子目錄節(jié)點。例如在前述的例子中,“windows”目錄節(jié)點即位于其同級目錄二叉樹的樹根位置,因此“C:”目錄節(jié)點的子目錄節(jié)點將會指向“windows”目錄節(jié)點。采用上述方法,將系統(tǒng)中的全部路徑均構成多個目錄節(jié)點,并且所述目錄節(jié)點之間通過父目錄指針、子目錄指針連接不同層級之間的目錄節(jié)點,通過同級左指針和同級右指針連接同級目錄之間的關系。形成一個多層級的平衡二叉樹群。映射目錄指針用于指向該目錄節(jié)點在其他系統(tǒng)中對應的目錄節(jié)點。例如,源系統(tǒng)為真實操作系統(tǒng),該目錄的原始路徑為“C: \windows\winsxs ”,目標系統(tǒng)為虛擬操作系統(tǒng),根據(jù)預定的對應關系可以得知,其在虛擬操作系統(tǒng)中對應的目錄原始路徑應該為(VROOT) \shadows\shasxs”,則在真實操作系統(tǒng)下目錄名為“winsxs”的目錄節(jié)點,其映射目錄指針應該指向虛擬操作系統(tǒng)中的“shasxs”目錄節(jié)點。此外,對于存在多個系統(tǒng)的路徑需要映射的時候,可以設置多個映射指針,例如第一映射指針指向第一目標系統(tǒng)中原始路徑為“@(VR00T) \shadows\shasxs”的目錄節(jié)點“shasxs”,第二映射指針指向第二目標系統(tǒng)中原始路徑為“@(iR00T) \ios\iosxs”的目錄節(jié)點“ iosxs”,這樣對于多個系統(tǒng)中的路徑需要映射時,不必構建多個龐大的映射表,而僅需要增設一個指針地址即可。在源系統(tǒng)中對于一個目錄節(jié)點的一次尋址即可獲得其在多個目標系統(tǒng)中對應的目錄節(jié)點。首先通過實施例一說明在操作系統(tǒng)中構建路徑存儲方法。101、獲取輸入的一個原始路徑信息。例如“C: \windows\winsxs”之類的字符串。102、對每個原始路徑信息,將所述原始路徑信息依據(jù)路徑分隔符分解成至少一個目錄名。例如“C: ”、“windows”、“winsxs”。103、由根目錄的目錄名開始判斷,是否該根目錄名已經(jīng)存入根目錄節(jié)點中,若是則針對其子目錄的目錄名繼續(xù)判斷是否已存入子目錄節(jié)點中,若是未存儲過的新目錄名則,104、分配新目錄節(jié)點的存儲空間,將該目錄名存入目錄節(jié)點。例如,從根目錄開始處理,先判斷根目錄“C: ”是否已經(jīng)存入目錄節(jié)點,如果還沒有,則將“ C: ”這一根目錄名存入目錄節(jié)點。該目錄節(jié)點,其目錄名即為“ C: ”。
105、設置該目錄節(jié)點的父目錄指針,指向其父目錄節(jié)點。由于“C:”是根目錄沒有父目錄,其父目錄指針為空;而如果當前處理的是“windows”目錄節(jié)點,其父目錄指針則應當指向“C:”目錄節(jié)點的地址。106、設置該目錄節(jié)點的同級目錄指針。若該目錄節(jié)點不存在其他的同級目錄節(jié)點時,即將該目錄節(jié)點作為平衡二叉樹的樹根位置。同級左指針和同級右指針均設置為空。當該目錄節(jié)點存在其他的同級目錄節(jié)點時。調(diào)用平衡二叉樹的插入操作,根據(jù)該目錄的目錄名為序將其插入到適當?shù)奈恢蒙希⑶艺{(diào)用平衡二叉樹的調(diào)整操作,保持二叉樹的平衡性,即對于樹中的每個節(jié)點,其左子樹和右子樹的高度差絕對值不大于I。107、設置該目錄節(jié)點的父目錄節(jié)點的子節(jié)點指針。由于在步驟103. 3中同級目錄的平衡二叉樹的樹根位置可能發(fā)生了變化,例如,可能由“program”目錄節(jié)點調(diào)整為了“windows”目錄節(jié)點,因此在這里設置其父目錄節(jié)點“C: ”的子節(jié)點指針為指向調(diào)整后的位于平衡二叉樹的樹根位置的子目錄節(jié)點即“windows”目錄節(jié)點。當然,如果當前處理的目錄節(jié)點就是根目錄節(jié)點“C: ”,它沒有父目錄節(jié)點,自然也不必設置其父目錄節(jié)點的子節(jié)點 指針了。108、繼續(xù)跳回步驟103直至判斷完該原始路徑信息包括的末級子目錄的目錄名。109、繼續(xù)跳回步驟101處理下一個原始路徑信息,直至全部原始路徑信息都處理完畢。110、在多個系統(tǒng)的路徑信息都存儲完畢之后,在每個目錄節(jié)點中設置其映射目錄指針指向該目錄節(jié)點在其他系統(tǒng)中對應的目錄節(jié)點。本發(fā)明還提出了一種目錄存儲系統(tǒng),其特征在于包括路徑分解模塊,用于獲取輸入的一個原始路徑信息,將所述原始路徑信息依據(jù)路徑分隔符分解成至少一個目錄名;存儲分配模塊,用于由根目錄的目錄名開始判斷,是否該根目錄名已經(jīng)存入根目錄節(jié)點中,若是則針對其子目錄的目錄名繼續(xù)判斷是否已存入子目錄節(jié)點中,若是未存儲過的新目錄名則;分配新目錄節(jié)點的存儲空間,將該目錄名存入目錄節(jié)點;指針設置模塊,用于設置該目錄節(jié)點的父目錄指針,指向其父目錄節(jié)點;設置該目錄節(jié)點的同級目錄指針,使得該目錄節(jié)點與其同級目錄節(jié)點構成為一顆平衡二叉樹;設置該目錄節(jié)點的父目錄節(jié)點的子節(jié)點指針,指向該目錄節(jié)點所在平衡二叉樹的樹根位置的目錄節(jié)點;映射設置模塊,用于當路徑分解模塊、存儲分配模塊以及指針設置模塊將全部原始路徑信息都處理完畢時,在多個系統(tǒng)的路徑信息都存儲完畢之后,在每個目錄節(jié)點中設置其映射目錄指針指向該目錄節(jié)點在其他系統(tǒng)中對應的目錄節(jié)點。以下的實施例二用于說明由源系統(tǒng)的路徑映射獲得目標系統(tǒng)的路徑的方法。201、獲取輸入的源系統(tǒng)中的原始路徑信息,例如“C: \windows\winsxs”之類的字符串。202、將所述原始路徑信息依據(jù)路徑分隔符分解成至少一個目錄名,例如“C:”、“windows,,、“winsxs ”。203、由分解得到的根目錄名開始判斷,是否與根目錄節(jié)點的目錄名相同。例如,先比較分解得到的根目錄名“C:”是否與根目錄節(jié)點的目錄名“C:”相同,如果相同則比較分解得到的下一級子目錄名“windows”與目錄節(jié)點“C: ”的子目錄指針指向的子目錄節(jié)點“windows”的目錄名是否相同。如果仍相同則繼續(xù)比較下一級目錄。如果分解得到的目錄名與目錄節(jié)點中存儲的目錄名不相同,則在該目錄節(jié)點的同級目錄節(jié)點構成的平衡二叉樹中查找具有該目錄名的目錄節(jié)點。例如,當尋找“windows”的子目錄“winsxs”的目錄名時,由于“windows”目錄節(jié)點的子目錄指針指向的是其多個子目錄構成的平衡二叉樹中位于二叉樹樹根位置的子目錄節(jié)點“system”,因此,其目錄名與“winsxs”顯然不符,于是根據(jù)兩者目錄名的順序可以得知目錄節(jié)點“winsxs”位于目錄節(jié)點“system”的右側分支上,因此通過目錄節(jié)點“system”的同級右指針向右側分支尋址就能夠找到。當然,如果這課平衡二叉樹節(jié)點較多的話,有可能需要多次進行上述的比較尋址才能找到。通過逐級目錄判斷,尋址到該原始路徑信息分解得到的末級子目錄的目錄名對應的目錄節(jié)點。204、從該原始路徑信息分解得到的末級子目錄的目錄名對應的目錄節(jié)點中獲取 映射目錄指針,尋址到該目錄節(jié)點在目標系統(tǒng)中對應的目錄節(jié)點。 例如從“winsxs”目錄節(jié)點中獲取映射目錄指針,尋址找到其在目標系統(tǒng)中對應的目錄節(jié)點“shasxs”。205、通過目標系統(tǒng)中對應的目錄節(jié)點獲取其父目錄指針,逐級尋址到其父目錄節(jié)點直至根目錄節(jié)點。例如,通過目標系統(tǒng)中的目錄節(jié)點“shasxs”的父目錄指針,尋址找到其在目標系統(tǒng)中的父目錄節(jié)點“shadows”,再通過目錄節(jié)點“shadows”的父目錄指針,尋址其父目錄,直至其根目錄(VR00T) ”。206、在目標系統(tǒng)中根據(jù)父目錄指針尋址找到的目錄節(jié)點形成了一個鏈,將各目錄節(jié)點的目錄名通過目錄分隔符串聯(lián)起來,即得到在目標系統(tǒng)中的原始路徑信息。在上述例子中即可得到原始路徑信息“O (VR00T) \shadows\shasxs”。207、輸出目標系統(tǒng)中的原始路徑信息。通過實施例二中的方法即可由源系統(tǒng)中的路徑信息快速映射得到目標系統(tǒng)中的路徑信息。盡管上述實施例中,是以一個目標系統(tǒng)作為示例,但在多個目標系統(tǒng)需要映射時,僅需在每個目錄節(jié)點中設置多個映射指針即可通過一次尋址獲得多個映射結果??梢垣@得非常優(yōu)異的存儲空間利用率和運算速度。本發(fā)明還提出了一種目錄映射系統(tǒng),其特征在于,包括路徑分解模塊,用于獲取輸入的源系統(tǒng)中的原始路徑信息;將所述原始路徑信息依據(jù)路徑分隔符分解成至少一個目錄名;節(jié)點查找模塊,用于由分解得到的根目錄名開始判斷,是否與根目錄節(jié)點的目錄名相同;如果相同則比較分解得到的下一級子目錄名與子目錄節(jié)點的目錄名是否相同;如果分解得到的目錄名與目錄節(jié)點中存儲的目錄名不相同,則在該目錄節(jié)點的同級目錄節(jié)點構成的平衡二叉樹中查找具有該目錄名的目錄節(jié)點;通過逐級目錄判斷,尋址到該原始路徑信息分解得到的末級子目錄的目錄名對應的目錄節(jié)點;映射尋址模塊,用于從該原始路徑信息分解得到的末級子目錄的目錄名對應的目錄節(jié)點中獲取映射目錄指針,尋址到該目錄節(jié)點在目標系統(tǒng)中對應的目錄節(jié)點;通過目標系統(tǒng)中對應的目錄節(jié)點獲取其父目錄指針,逐級尋址到其父目錄節(jié)點直至根目錄節(jié)點;
路徑輸出模塊,用于將目標系統(tǒng)中根據(jù)父目錄指針尋址找到的目錄節(jié)點形成了一個鏈,將各目錄節(jié)點的目錄名通過目錄分隔符串聯(lián)起來,即得到在目標系統(tǒng)中的原始路徑信息;輸出目標系統(tǒng)中的原始路徑信息。由此可見,本發(fā)明提出的技術方案解決了路徑信息存儲空間浪費巨大、尋址速度較慢、映射表查找效率低下等技術問題,取得了極好的技術效果,在本領域中具有廣泛的應用前景。本發(fā)明的實施方式中的方法和/或模塊均可以通過軟件、固件、硬件中的一種或多種的組合來實現(xiàn),并不限于使用某一種方式來實現(xiàn)。以上的實施方式均為示例性的描述,并非對本發(fā)明保護范圍的限定?!?br>
權利要求
1.一種目錄存儲方法,其特征在于包括以下步驟 .101、獲取輸入的一個原始路徑信息; .102、將所述原始路徑信息依據(jù)路徑分隔符分解成至少一個目錄名; .103、由根目錄的目錄名開始判斷,是否該根目錄名已經(jīng)存入根目錄節(jié)點中,若是則針對其子目錄的目錄名繼續(xù)判斷是否已存入子目錄節(jié)點中,若是未存儲過的新目錄名則; .104、分配新目錄節(jié)點的存儲空間,將該目錄名存入目錄節(jié)點; .105、設置該目錄節(jié)點的父目錄指針,指向其父目錄節(jié)點; .106、設置該目錄節(jié)點的同級目錄指針,使得該目錄節(jié)點與其同級目錄節(jié)點構成為一顆平衡二叉樹; .107、設置該目錄節(jié)點的父目錄節(jié)點的子節(jié)點指針,指向該目錄節(jié)點所在平衡二叉樹的樹根位置的目錄節(jié)點; .108、繼續(xù)跳回步驟103直至判斷完該原始路徑信息包括的末級子目錄的目錄名。
2.如權利要求I所述的目錄存儲方法,其特征在于步驟108之后還包括以下步驟 .109、繼續(xù)跳回步驟101獲取下一個原始路徑信息,直至全部原始路徑信息都處理完畢。
3.如權利要求2所述的目錄存儲方法,其特征在于步驟109之后還包括以下步驟 .110、在多個系統(tǒng)的路徑信息都存儲完畢之后,在每個目錄節(jié)點中設置其映射目錄指針指向該目錄節(jié)點在其他系統(tǒng)中對應的目錄節(jié)點。
4.如權利要求1-3之一所述的目錄存儲方法,其特征在于,其中的同級目錄指針包括同級左指針和同級右指針,同級左指針指向位于該目錄節(jié)點左側分支的目錄節(jié)點,同級右指針指向位于該目錄節(jié)點右側分支的目錄節(jié)點。
5.如權利要求1-4之一所述的目錄存儲方法,其特征在于,其中映射目錄指針包括至少一個指針,分別指向至少一個目標系統(tǒng)中的對應目錄節(jié)點。
6.一種目錄存儲系統(tǒng),其特征在于包括 路徑分解模塊,用于獲取輸入的一個原始路徑信息,將所述原始路徑信息依據(jù)路徑分隔符分解成至少一個目錄名; 存儲分配模塊,用于由根目錄的目錄名開始判斷,是否該根目錄名已經(jīng)存入根目錄節(jié)點中,若是則針對其子目錄的目錄名繼續(xù)判斷是否已存入子目錄節(jié)點中,若是未存儲過的新目錄名則;分配新目錄節(jié)點的存儲空間,將該目錄名存入目錄節(jié)點; 指針設置模塊,用于設置該目錄節(jié)點的父目錄指針,指向其父目錄節(jié)點;設置該目錄節(jié)點的同級目錄指針,使得該目錄節(jié)點與其同級目錄節(jié)點構成為一顆平衡二叉樹;設置該目錄節(jié)點的父目錄節(jié)點的子節(jié)點指針,指向該目錄節(jié)點所在平衡二叉樹的樹根位置的目錄節(jié)占. 映射設置模塊,用于當路徑分解模塊、存儲分配模塊以及指針設置模塊將全部原始路徑信息都處理完畢時,在多個系統(tǒng)的路徑信息都存儲完畢之后,在每個目錄節(jié)點中設置其映射目錄指針指向該目錄節(jié)點在其他系統(tǒng)中對應的目錄節(jié)點。
7.一種目錄映射方法,其特征在于包括以下步驟 .201、獲取輸入的源系統(tǒng)中的原始路徑信息; .202、將所述原始路徑信息依據(jù)路徑分隔符分解成至少一個目錄名;.203、由分解得到的根目錄名開始判斷,是否與根目錄節(jié)點的目錄名相同;如果相同則比較分解得到的下一級子目錄名與子目錄節(jié)點的目錄名是否相同;如果分解得到的目錄名與目錄節(jié)點中存儲的目錄名不相同,則在該目錄節(jié)點的同級目錄節(jié)點構成的平衡二叉樹中查找具有該目錄名的目錄節(jié)點; 通過逐級目錄判斷,尋址到該原始路徑信息分解得到的末級子目錄的目錄名對應的目錄節(jié)點; . 204、從該原始路徑信息分解得到的末級子目錄的目錄名對應的目錄節(jié)點中獲取映射目錄指針,尋址到該目錄節(jié)點在目標系統(tǒng)中對應的目錄節(jié)點;. 205、通過目標系統(tǒng)中對應的目錄節(jié)點獲取其父目錄指針,逐級尋址到其父目錄節(jié)點直至根目錄節(jié)點; .206、在目標系統(tǒng)中根據(jù)父目錄指針尋址找到的目錄節(jié)點形成了一個鏈,將各目錄節(jié)點的目錄名通過目錄分隔符串聯(lián)起來,即得到在目標系統(tǒng)中的原始路徑信息; .207、輸出目標系統(tǒng)中的原始路徑彳目息。
8.如權利要求7所述的目錄映射方法,其特征在于,步驟203中的在該目錄節(jié)點的同級目錄節(jié)點構成的平衡二叉樹中查找具有該目錄名的目錄節(jié)點,是根據(jù)目錄名的順序,向該平衡二叉樹的左側分支或者右側分支查找具有該目錄名的目錄節(jié)點。
9.如權利要求7或8所述的目錄映射方法,其特征在于,其中映射目錄指針包括至少一個指針,分別指向至少一個目標系統(tǒng)中的對應目錄節(jié)點。
10.一種目錄映射系統(tǒng),其特征在于,包括 路徑分解模塊,用于獲取輸入的源系統(tǒng)中的原始路徑信息;將所述原始路徑信息依據(jù)路徑分隔符分解成至少一個目錄名; 節(jié)點查找模塊,用于由分解得到的根目錄名開始判斷,是否與根目錄節(jié)點的目錄名相同;如果相同則比較分解得到的下一級子目錄名與子目錄節(jié)點的目錄名是否相同;如果分解得到的目錄名與目錄節(jié)點中存儲的目錄名不相同,則在該目錄節(jié)點的同級目錄節(jié)點構成的平衡二叉樹中查找具有該目錄名的目錄節(jié)點;通過逐級目錄判斷,尋址到該原始路徑信息分解得到的末級子目錄的目錄名對應的目錄節(jié)點; 映射尋址模塊,用于從該原始路徑信息分解得到的末級子目錄的目錄名對應的目錄節(jié)點中獲取映射目錄指針,尋址到該目錄節(jié)點在目標系統(tǒng)中對應的目錄節(jié)點;通過目標系統(tǒng)中對應的目錄節(jié)點獲取其父目錄指針,逐級尋址到其父目錄節(jié)點直至根目錄節(jié)點; 路徑輸出模塊,用于將目標系統(tǒng)中根據(jù)父目錄指針尋址找到的目錄節(jié)點形成了一個鏈,將各目錄節(jié)點的目錄名通過目錄分隔符串聯(lián)起來,即得到在目標系統(tǒng)中的原始路徑信息;輸出目標系統(tǒng)中的原始路徑信息。
全文摘要
本發(fā)明提出一種目錄的存儲和映射方法及系統(tǒng),采用了將路徑信息分解為目錄節(jié)點分別存儲,節(jié)省了存儲空間。為每個目錄節(jié)點提供父目錄指針,子目錄指針,同級目錄指針,映射目錄指針。使得每個目錄節(jié)點與其父目錄、子目錄有序地鏈接起來,便于雙向查找,同級目錄之間構成平衡二叉樹,縮短了查詢時間。映射目錄指針的設置能夠最快獲得多個目標系統(tǒng)中對應的目錄節(jié)點。本發(fā)明能夠提高目錄存儲的空間利用率,提高查詢速度和獲得目錄映射的效率。
文檔編號G06F17/30GK102902734SQ201210335459
公開日2013年1月30日 申請日期2012年9月12日 優(yōu)先權日2012年9月12日
發(fā)明者李瑞平 申請人:北京伸得緯科技有限公司, 國際伸得緯有限公司