專利名稱:圖形顯示到文件系統(tǒng)中的文件的分層硬鏈接的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的領(lǐng)域是數(shù)據(jù)處理,或者更具體地說,是用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的方法、裝置和產(chǎn)品。
背景技術(shù):
通常將1948年開發(fā)的EDVAC計(jì)算機(jī)系統(tǒng)作為計(jì)算機(jī)時(shí)代的開端。從那時(shí)起,計(jì)算機(jī)系統(tǒng)已經(jīng)發(fā)展成非常復(fù)雜的設(shè)備?,F(xiàn)今的計(jì)算機(jī)比早期的諸如EDVAC之類的系統(tǒng)更加完善。計(jì)算機(jī)系統(tǒng)通常包括硬件組件和軟件組件、應(yīng)用程序、操作系統(tǒng)、處理器、總線、存儲(chǔ)器、輸入/輸出設(shè)備等的組合。由于半導(dǎo)體處理和計(jì)算機(jī)體系結(jié)構(gòu)的進(jìn)步使計(jì)算機(jī)的性能不斷提高,更加完善的計(jì)算機(jī)軟件已經(jīng)發(fā)展為利用高性能的軟件,這導(dǎo)致今天的計(jì)算機(jī)系統(tǒng)比僅僅幾年以前的計(jì)算機(jī)系統(tǒng)更加強(qiáng)大。
計(jì)算機(jī)具有稱為操作系統(tǒng)的軟件基礎(chǔ)層,所述操作系統(tǒng)存儲(chǔ)和組織文件并且應(yīng)用依賴其來訪問計(jì)算機(jī)資源。在操作系統(tǒng)中,在其中命名、存儲(chǔ)和組織諸如文件之類的對(duì)象的總體結(jié)構(gòu)稱為文件系統(tǒng)。通常在命名空間中組織文件系統(tǒng),所述命名空間包括用于訪問文件系統(tǒng)中存儲(chǔ)的對(duì)象的路徑名集合。路徑名是一系列標(biāo)識(shí)文件的符號(hào)和名稱。命名空間中的每個(gè)文件都具有一個(gè)名稱,稱為文件名,所以最簡(jiǎn)單的路徑名類型就只是文件名。為了訪問目錄中的文件,路徑名標(biāo)識(shí)到文件的路徑是從文件的工作目錄還是從文件的根目錄開始。不同的操作系統(tǒng)具有不同的指定路徑名的規(guī)則。例如,在DOS系統(tǒng)中,根目錄被命名為‘\’,并且每個(gè)子目錄由其他反斜杠分隔。在UNIX中,根目錄被命名為‘/’,每個(gè)子目錄后面都帶有斜杠。在Macintosh環(huán)境中,目錄由冒號(hào)分隔。這些路徑名將對(duì)象‘映射’或‘鏈接’到命名空間。直接將對(duì)象映射到命名空間的鏈接稱為“硬鏈接”。
現(xiàn)代操作系統(tǒng)提供了圖形用戶界面(“GUI”)來查看和操縱文件系統(tǒng)中的文件和目錄。傳統(tǒng)的GUI通常通過將文件系統(tǒng)對(duì)象分類為容器對(duì)象或數(shù)據(jù)對(duì)象來向用戶顯示文件系統(tǒng)命名空間。諸如目錄或文件夾之類的容器對(duì)象可以包括其他容器對(duì)象或目錄并且通常位于文件系統(tǒng)的GUI的左側(cè)。諸如到文件的硬鏈接之類的數(shù)據(jù)對(duì)象不包括其他對(duì)象并且通常位于文件系統(tǒng)的GUI的右側(cè)。
諸如硬鏈接之類的數(shù)據(jù)對(duì)象通常與文件系統(tǒng)中它們所代表的基礎(chǔ)文件具有一對(duì)一關(guān)系。但是,如果存在多個(gè)到文件系統(tǒng)中的單個(gè)文件的硬鏈接,則傳統(tǒng)的GUI在文件系統(tǒng)GUI的右側(cè)將所述硬鏈接顯示為數(shù)據(jù)對(duì)象并且沒有指出存在到所述文件的其他硬鏈接。傳統(tǒng)的文件系統(tǒng)GUI沒有區(qū)分具有多個(gè)硬鏈接和具有單個(gè)硬鏈接的文件造成了混淆并增加了管理具有多個(gè)硬鏈接的文件的難度。
例如,要從文件系統(tǒng)移除文件的用戶可能會(huì)刪除顯示為到文件的單個(gè)硬鏈接。如果該文件實(shí)際上在整個(gè)命名空間中具有多個(gè)硬鏈接,則用戶將只移除一個(gè)硬鏈接,而不是從文件系統(tǒng)中移除基礎(chǔ)文件。為了使用戶使用傳統(tǒng)文件系統(tǒng)GUI從文件系統(tǒng)移除文件,用戶必須手動(dòng)搜索文件系統(tǒng)的整個(gè)命名空間并手動(dòng)刪除所有與該文件關(guān)聯(lián)的硬鏈接。不能在文件系統(tǒng)GUI中有效地查看和操縱具有多個(gè)硬鏈接的文件浪費(fèi)了用戶的時(shí)間。
發(fā)明內(nèi)容
本發(fā)明提供了用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的方法、裝置和計(jì)算機(jī)程序產(chǎn)品,包括標(biāo)識(shí)文件的多個(gè)硬鏈接;以及顯示所述多個(gè)硬鏈接和所述文件之間的關(guān)系。某些實(shí)施例還包括包含到文件的直接將所述文件映射到命名空間中的鏈接的硬鏈接。圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接通常還包括提供到所述文件的硬鏈接的列表和在所述文件中提供指向所述列表的指針。某些實(shí)施例還包括刪除所述具有多個(gè)硬鏈接的文件;重命名到所述文件的所述硬鏈接;以及顯示到所述文件的所述硬鏈接的路徑名。
根據(jù)用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的實(shí)施例,顯示所述多個(gè)硬鏈接和所述文件之間的關(guān)系還可以包括顯示至少一個(gè)代表所述文件和代表到所述文件的硬鏈接數(shù)的圖標(biāo);以及顯示代表每個(gè)到具有多個(gè)硬鏈接的文件的硬鏈接的獨(dú)特圖標(biāo)。
根據(jù)用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的實(shí)施例,標(biāo)識(shí)文件的多個(gè)硬鏈接還可以包括遍歷分層的命名空間;對(duì)于每個(gè)硬鏈接,判定所述硬鏈接是否指向其他硬鏈接;跟隨指針從具有多個(gè)硬鏈接的文件到達(dá)所述文件的硬鏈接列表;以及遍歷所述列表。
根據(jù)用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的實(shí)施例,刪除具有多個(gè)硬鏈接的文件還可以包括跟隨指針從具有多個(gè)硬鏈接的所述文件到達(dá)所述文件的硬鏈接列表;以及刪除所述列表中的所有硬鏈接。
根據(jù)用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的實(shí)施例,重命名到所述文件的所述硬鏈接還可以包括接收來自用戶的新文件名;跟隨指針從具有多個(gè)硬鏈接的文件到達(dá)所述文件的硬鏈接列表;以及將所述新的名稱指派給所述列表中的所述硬鏈接。
根據(jù)用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的實(shí)施例,顯示到所述文件的所述硬鏈接的路徑名還可以包括跟隨指針從具有多個(gè)硬鏈接的所述文件到達(dá)所述文件的硬鏈接列表;對(duì)于所述列表中的每個(gè)硬鏈接,從所述硬鏈接檢索名稱;以及對(duì)于所述列表中的每個(gè)硬鏈接,遍歷層次結(jié)構(gòu)以到達(dá)所述層次結(jié)構(gòu)的根以便檢索所述硬鏈接的路徑。
如附圖中示出的,從以下對(duì)本發(fā)明的示例性實(shí)施例的更具體的描述,本發(fā)明的上述和其他目標(biāo)、特征和優(yōu)點(diǎn)將變得顯而易見,其中相同的標(biāo)號(hào)通常代表本發(fā)明的示例性實(shí)施例的相同部件。
圖1是示出了用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的示例性系統(tǒng)的網(wǎng)絡(luò)示意圖;圖2是包括用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的示例性計(jì)算機(jī)的自動(dòng)計(jì)算機(jī)器的方塊圖;圖3是示出了用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的示例性方法的流程圖;圖4是示出了用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的示例性方法的另一個(gè)流程圖;圖5是示出了根據(jù)本發(fā)明的實(shí)施例的用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的示例性方法的線條圖;圖6是示出了用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的示例性方法的另一個(gè)流程圖;圖7是示出了用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的示例性方法的另一個(gè)流程圖;以及圖8是示出了用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的示例性方法的另一個(gè)流程圖。
具體實(shí)施例方式
在本說明書中很大程度上根據(jù)用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的方法來描述了本發(fā)明。但是,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,任何包括用于根據(jù)所披露的方法進(jìn)行操作的適合編程裝置的計(jì)算機(jī)系統(tǒng)都落入本發(fā)明的范圍之內(nèi)。適合的編程裝置包括任何用于引導(dǎo)計(jì)算機(jī)系統(tǒng)執(zhí)行本發(fā)明的方法的步驟的裝置,包括例如包含連接到計(jì)算機(jī)存儲(chǔ)器的處理單元和算術(shù)邏輯電路的系統(tǒng),所述系統(tǒng)具有在計(jì)算機(jī)存儲(chǔ)器(所述計(jì)算機(jī)存儲(chǔ)器包括配置成存儲(chǔ)數(shù)據(jù)和程序指令的電子電路)中存儲(chǔ)本發(fā)明的方法的編程步驟以便由處理單元來執(zhí)行的能力。
本發(fā)明還可以被包括在諸如磁盤或其他記錄介質(zhì)之類的與任何適合的數(shù)據(jù)處理系統(tǒng)一起使用的計(jì)算機(jī)程序產(chǎn)品中。計(jì)算機(jī)程序產(chǎn)品的實(shí)施例可以使用任何用于機(jī)器可讀信息的記錄介質(zhì)(磁介質(zhì)、光介質(zhì)或其他適合的介質(zhì))來實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員將立即認(rèn)識(shí)到,任何具有適合的編程裝置的計(jì)算機(jī)系統(tǒng)都將能夠執(zhí)行包含在程序產(chǎn)品中的本發(fā)明的方法的步驟。本領(lǐng)域的技術(shù)人員將立即認(rèn)識(shí)到,雖然在本說明書中描述的大多數(shù)示例性實(shí)施例都面向在計(jì)算機(jī)硬件上安裝和執(zhí)行的軟件,但是作為固件或硬件實(shí)現(xiàn)的替代實(shí)施例也在本發(fā)明的范圍之內(nèi)。
參考附圖(從圖1開始)描述了根據(jù)本發(fā)明的實(shí)施例的用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的示例性方法、裝置和產(chǎn)品。圖1是示出了根據(jù)本發(fā)明的實(shí)施例的用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的示例性系統(tǒng)的網(wǎng)絡(luò)示意圖。根據(jù)本發(fā)明的實(shí)施例,圖1的系統(tǒng)的每個(gè)設(shè)備(108、112、104、110、102、126和106)都能夠通過標(biāo)識(shí)文件的多個(gè)硬鏈接以及顯示所述多個(gè)硬鏈接和所述文件之間的關(guān)系來圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接。
圖1的系統(tǒng)包括廣域網(wǎng)(“WAN”)(101)和局域網(wǎng)(“LAN”)(103)。圖1的體系結(jié)構(gòu)的網(wǎng)絡(luò)連接方面只是用于說明而非進(jìn)行限制。實(shí)際上,用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的系統(tǒng)可以作為局域網(wǎng)、廣域網(wǎng)、企業(yè)內(nèi)部網(wǎng)、互聯(lián)網(wǎng)、因特網(wǎng)、Web、萬維網(wǎng)本身或本領(lǐng)域的技術(shù)人員所了解的其他連接來連接。此類網(wǎng)絡(luò)是可用于在總體數(shù)據(jù)處理系統(tǒng)中連接在一起的各種設(shè)備與計(jì)算機(jī)之間提供數(shù)據(jù)通信連接的介質(zhì)。
在圖1的實(shí)例中,服務(wù)器(106)實(shí)現(xiàn)局域網(wǎng)(103)與廣域網(wǎng)(101)之間的網(wǎng)關(guān)、路由器或網(wǎng)橋。在圖1的實(shí)例中,將包括PDA(112)、計(jì)算機(jī)工作站(104)、移動(dòng)電話(110)和個(gè)人計(jì)算機(jī)(108)的若干示例性設(shè)備連接到廣域網(wǎng)(101)。通過無線鏈接(116)將啟用網(wǎng)絡(luò)的移動(dòng)電話(110)連接到廣域網(wǎng)(101),并通過無線鏈接(114)將PDA(112)連接到廣域網(wǎng)(101)。在圖1的實(shí)例中,通過有線線路連接(120)將個(gè)人計(jì)算機(jī)(108)連接到網(wǎng)絡(luò)(101),并通過有線線路連接(122)將計(jì)算機(jī)工作站(104)連接到網(wǎng)絡(luò)(101)。在圖1的實(shí)例中,通過無線鏈接(118)將膝上型計(jì)算機(jī)(126)連接到局域網(wǎng)(103),并通過有線線路連接(124)將個(gè)人計(jì)算機(jī)(102)連接到局域網(wǎng)(103)。
在圖1的系統(tǒng)中,每個(gè)示例性設(shè)備(108、112、104、110、126、106和102)都包括計(jì)算機(jī)處理器和連接到所述處理器以便進(jìn)行數(shù)據(jù)傳輸?shù)挠?jì)算機(jī)存儲(chǔ)器。圖1的每個(gè)計(jì)算機(jī)的計(jì)算機(jī)存儲(chǔ)器都在其中布置有文件系統(tǒng)和包括圖形硬鏈接顯示模塊的計(jì)算機(jī)程序指令。所述圖形硬鏈接顯示模塊通常能夠通過標(biāo)識(shí)文件的多個(gè)硬鏈接以及顯示所述多個(gè)硬鏈接和所述文件之間的關(guān)系來圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接。
所述圖形硬鏈接顯示模塊通常還能夠顯示至少一個(gè)代表所述文件和代表到所述文件的硬鏈接數(shù)的圖標(biāo);以及顯示代表每個(gè)到具有多個(gè)硬鏈接的文件的硬鏈接的獨(dú)特圖標(biāo)。所述圖形硬鏈接顯示模塊通常還能夠遍歷分層的命名空間;對(duì)于每個(gè)硬鏈接,判定所述硬鏈接是否指向其他硬鏈接;跟隨指針從具有多個(gè)硬鏈接的文件到達(dá)所述文件的硬鏈接列表;以及遍歷所述列表。所述圖形硬鏈接顯示模塊通常還能夠提供到所述文件的硬鏈接的列表和在所述文件中提供指向所述列表的指針。所述圖形硬鏈接顯示模塊通常還能夠刪除具有多個(gè)硬鏈接的文件,這包括跟隨指針從具有多個(gè)硬鏈接的所述文件到達(dá)所述文件的硬鏈接列表以及刪除所述列表中的所有硬鏈接。所述圖形硬鏈接顯示模塊通常還能夠重命名到所述文件的所述硬鏈接,這包括接收來自用戶的新文件名;跟隨指針從具有多個(gè)硬鏈接的文件到達(dá)所述文件的硬鏈接列表;以及將所述新的名稱指派給所述列表中的所述硬鏈接。所述圖形硬鏈接顯示模塊通常還能夠顯示到所述文件的所述硬鏈接的路徑名,這包括跟隨指針從具有多個(gè)硬鏈接的所述文件到達(dá)所述文件的硬鏈接列表;對(duì)于所述列表中的每個(gè)硬鏈接,從所述硬鏈接檢索名稱;以及對(duì)于所述列表中的每個(gè)硬鏈接,遍歷層次結(jié)構(gòu)以到達(dá)所述層次結(jié)構(gòu)的根以便檢索所述硬鏈接的路徑。
圖1中所示的示例性系統(tǒng)包括的服務(wù)器和其他設(shè)備的布置只是用于說明而非進(jìn)行限制。根據(jù)本發(fā)明的各種實(shí)施例的可用數(shù)據(jù)處理系統(tǒng)可以包括圖1中未示出但本領(lǐng)域的技術(shù)人員將了解的其他服務(wù)器、路由器、其他設(shè)備和對(duì)等體系結(jié)構(gòu)。此類數(shù)據(jù)處理系統(tǒng)中的網(wǎng)絡(luò)可以支持許多數(shù)據(jù)通信協(xié)議,包括例如,TCP(傳輸控制協(xié)議)、IP(網(wǎng)際協(xié)議)、HTTP(超文本傳輸協(xié)議)、WAP(無線訪問協(xié)議)、HDTP(手持設(shè)備傳輸協(xié)議)和本領(lǐng)域的技術(shù)人員將了解的其他協(xié)議。本發(fā)明的各種實(shí)施例可以在除圖1中示出的硬件平臺(tái)之外的各種硬件平臺(tái)上實(shí)現(xiàn)。
通常使用計(jì)算機(jī)(即,使用自動(dòng)計(jì)算機(jī)器)來實(shí)現(xiàn)根據(jù)本發(fā)明的圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接。例如,在圖1的系統(tǒng)中,所有節(jié)點(diǎn)、服務(wù)器和通信設(shè)備都在某種程度上至少作為計(jì)算機(jī)來實(shí)現(xiàn)。因此,為了進(jìn)一步說明,圖2是根據(jù)本發(fā)明的實(shí)施例的包括用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的示例性計(jì)算機(jī)(152)的自動(dòng)計(jì)算機(jī)器的方塊圖。圖2的計(jì)算機(jī)(152)包括至少一個(gè)計(jì)算機(jī)處理器(156)或‘CPU’以及通過系統(tǒng)總線(160)連接到處理器(156)和計(jì)算機(jī)的其他組件的隨機(jī)存取存儲(chǔ)器(168)(“RAM”)。
存儲(chǔ)在RAM(168)中的是操作系統(tǒng)(154)。根據(jù)本發(fā)明的實(shí)施例,計(jì)算機(jī)中使用的操作系統(tǒng)包括UNIXTM、LinuxTM、Microsoft Windows NTTM、AIXTM、IBM的i5/OSTM和本領(lǐng)域的技術(shù)人員應(yīng)了解的其他操作系統(tǒng)。圖2的操作系統(tǒng)(154)包括文件系統(tǒng)(210)。文件系統(tǒng)提供了在其中命名、存儲(chǔ)和組織文件系統(tǒng)對(duì)象的總體結(jié)構(gòu)。文件系統(tǒng)可以包括文件、目錄以及查找和訪問這些項(xiàng)所需的信息。根據(jù)本發(fā)明的實(shí)施例,計(jì)算機(jī)中使用的文件系統(tǒng)包括高性能文件系統(tǒng)(“HPFS”)、NT文件系統(tǒng)(“NTFS”)、HFS Plus、Unix文件系統(tǒng)(UFS)、第二擴(kuò)展的文件系統(tǒng)(“ext2”)以及本領(lǐng)域的技術(shù)人員應(yīng)了解的其他文件系統(tǒng)。
根據(jù)本發(fā)明的實(shí)施例,圖2的操作系統(tǒng)(154)還包括圖形硬鏈接顯示模塊(200),即用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的計(jì)算機(jī)程序指令。所述圖形硬鏈接顯示模塊通常能夠通過標(biāo)識(shí)文件的多個(gè)硬鏈接以及顯示所述多個(gè)硬鏈接和所述文件之間的關(guān)系來圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接。在圖2的實(shí)例中,在RAM(168)中示出了操作系統(tǒng)(154)、文件系統(tǒng)(210)、圖形硬鏈接顯示模塊(200),但是此類軟件的許多組件通常還存儲(chǔ)在非易失性存儲(chǔ)器中。在圖2的實(shí)例中,為了說明而非進(jìn)行限制,將圖形硬鏈接顯示模塊(200)示為操作系統(tǒng)(154)的子系統(tǒng)。根據(jù)本發(fā)明,圖形硬鏈接顯示模塊還可以被植入為操作系統(tǒng)(154)外部的應(yīng)用。
圖2的計(jì)算機(jī)(152)包括通過系統(tǒng)總線(160)連接到處理器(156)和計(jì)算機(jī)(152)的其他組件的非易失性計(jì)算機(jī)存儲(chǔ)器(166)。非易失性計(jì)算機(jī)存儲(chǔ)器(166)可以被實(shí)現(xiàn)為硬盤驅(qū)動(dòng)器(170)、光盤驅(qū)動(dòng)器(172)、電可擦除可編程只讀存儲(chǔ)器(所謂的“EEPROM”或“閃速”存儲(chǔ)器)(174)、RAM驅(qū)動(dòng)器(未示出)或本領(lǐng)域的技術(shù)人員應(yīng)了解的任何其他類型的計(jì)算機(jī)存儲(chǔ)器。
圖2的實(shí)例計(jì)算機(jī)包括一個(gè)或多個(gè)輸入/輸出接口適配器(178)。計(jì)算機(jī)中的輸入/輸出接口適配器通過例如軟件驅(qū)動(dòng)程序和計(jì)算機(jī)硬件來實(shí)現(xiàn)面向用戶的輸入/輸出,以便控制到諸如計(jì)算機(jī)顯示屏幕之類的顯示設(shè)備(180)的輸出和來自諸如鍵盤和鼠標(biāo)之類的輸入設(shè)備(181)的輸入。
圖2的示例性計(jì)算機(jī)(152)包括用于實(shí)現(xiàn)與其他計(jì)算機(jī)(182)的數(shù)據(jù)通信(184)的通信適配器(167)??梢酝ㄟ^串行RS-232連接、外部總線(如USB)、數(shù)據(jù)通信網(wǎng)絡(luò)(如IP網(wǎng)絡(luò))和本領(lǐng)域的技術(shù)人員應(yīng)了解的其他方式來執(zhí)行此類數(shù)據(jù)通信。通信適配器實(shí)現(xiàn)硬件級(jí)別的數(shù)據(jù)通信,通過所述適配器,一臺(tái)計(jì)算機(jī)直接地或通過網(wǎng)絡(luò)將數(shù)據(jù)通信發(fā)送到另一臺(tái)計(jì)算機(jī)。根據(jù)本發(fā)明的實(shí)施例,用于確定目的地的可用性的通信適配器的實(shí)例包括用于有線撥號(hào)通信的調(diào)制解調(diào)器、用于有線網(wǎng)絡(luò)通信的以太網(wǎng)(IEEE802.3)適配器和用于無線網(wǎng)絡(luò)通信的802.11b適配器。
為了進(jìn)一步說明,圖3是示出了根據(jù)本發(fā)明的實(shí)施例的用于圖形地顯示到文件系統(tǒng)(210)中的文件的分層硬鏈接的示例性方法的流程圖,所述方法包括標(biāo)識(shí)(310)文件(302)的多個(gè)硬鏈接(312)以及顯示(320)多個(gè)硬鏈接(312)與文件(302)之間的關(guān)系。如上所述,實(shí)現(xiàn)有命名空間的示例性文件系統(tǒng)(210)包括NTFS、HPFS、UFS和本領(lǐng)域的技術(shù)人員應(yīng)了解的其他文件系統(tǒng)。在本說明書中,主要參考Unix文件系統(tǒng)來討論根據(jù)本發(fā)明的實(shí)施例的圖形地顯示到文件系統(tǒng)(210)中的文件的分層硬鏈接。這是為了說明而非進(jìn)行限制。實(shí)際上,可以使用許多本領(lǐng)域的技術(shù)人員應(yīng)了解的文件系統(tǒng)(具有命名空間并且支持文件具有多個(gè)硬鏈接)來實(shí)現(xiàn)根據(jù)本發(fā)明的實(shí)施例的圖形地顯示到文件系統(tǒng)(210)中的文件的分層硬鏈接。
如上所述,文件系統(tǒng)通常命名、存儲(chǔ)和組織對(duì)象。典型的文件系統(tǒng)(如Unix文件系統(tǒng))支持兩種主要的文件系統(tǒng)對(duì)象文件和目錄。在Unix文件系統(tǒng)中,每個(gè)對(duì)象都由稱為‘i節(jié)點(diǎn)’的數(shù)據(jù)結(jié)構(gòu)來表示。I節(jié)點(diǎn)存儲(chǔ)有關(guān)對(duì)象的信息,如對(duì)象類型、所有者、組、模式、大小、鏈接數(shù)、最后訪問時(shí)間和最后修改時(shí)間。I節(jié)點(diǎn)還包含用于存儲(chǔ)對(duì)象內(nèi)容的所有數(shù)據(jù)塊的物理磁盤地址。在創(chuàng)建對(duì)象時(shí),將唯一的i節(jié)點(diǎn)指派給文件系統(tǒng)(210)的每個(gè)對(duì)象。即,對(duì)于文件系統(tǒng)(210)中的每個(gè)文件,都存在一個(gè)i節(jié)點(diǎn)。當(dāng)創(chuàng)建文件系統(tǒng)(210)時(shí)分配文件系統(tǒng)(210)的所有i節(jié)點(diǎn),并且將唯一的‘i編號(hào)’指派給每個(gè)i節(jié)點(diǎn)。
圖3的命名空間(300)代表用于訪問存儲(chǔ)在文件系統(tǒng)(210)中的文件的路徑名的集合。在Unix文件系統(tǒng)中,通過將路徑名與文件系統(tǒng)(210)中的文件(302)的i編號(hào)相關(guān)聯(lián)來將路徑名映射到文件。命名空間(300)中的文件名與文件(302)本身之間的每個(gè)直接映射稱為‘硬鏈接’,并且遞增代表文件(302)的i節(jié)點(diǎn)的鏈接計(jì)數(shù)。也可以將路徑名間接地映射到文件。這些間接映射稱為‘軟鏈接’。此類軟鏈接通常將路徑名映射到另一個(gè)硬鏈接而不是映射到文件(302)本身。
通過將文件系統(tǒng)(210)中的文件映射到命名空間(300),目錄作為整體在文件系統(tǒng)(210)上建立結(jié)構(gòu)。目錄可以包含若干硬鏈接和其他目錄。操作系統(tǒng)為每個(gè)文件系統(tǒng)(210)維護(hù)一個(gè)稱為“根”目錄的特殊目錄。此目錄用作文件系統(tǒng)(210)層次結(jié)構(gòu)的根。文件系統(tǒng)(210)中的每個(gè)其他文件或目錄都從屬于根目錄。通過指定開始于根的目錄鏈中的路徑,可以在命名空間(300)中查找文件系統(tǒng)(210)中的文件。
如上所述,文件系統(tǒng)通常命名、存儲(chǔ)和組織對(duì)象(如文件)。文件(302)是存儲(chǔ)在文件系統(tǒng)(210)中的數(shù)據(jù)的任意集合。文件的實(shí)例包括電子表格、字處理文檔、圖形、應(yīng)用配置或本領(lǐng)域的技術(shù)人員應(yīng)了解的任何其他類型的數(shù)據(jù)集合。如上所述,在Unix文件系統(tǒng)中由單個(gè)i節(jié)點(diǎn)來表示文件(302)。但是,可以通過命名空間(300)和多個(gè)硬鏈接來訪問文件(302)。因此,圖3的實(shí)例包括標(biāo)識(shí)(310)文件(302)的多個(gè)硬鏈接(312)。根據(jù)圖3的方法,標(biāo)識(shí)(310)文件(302)的多個(gè)硬鏈接(312)可以通過以下步驟來實(shí)現(xiàn)遍歷分層的命名空間(300);對(duì)于每個(gè)硬鏈接,判定所述硬鏈接是否指向其他硬鏈接;跟隨指針從具有多個(gè)硬鏈接的文件到達(dá)所述文件(302)的硬鏈接列表;以及遍歷所述列表(如以下參考圖4詳細(xì)討論的)。
圖3的方法還包括顯示(320)多個(gè)硬鏈接(312)與文件(302)之間的關(guān)系。根據(jù)圖3的實(shí)例,通過在圖形用戶界面(“GUI”)中提供文件導(dǎo)航的窗口(340)來實(shí)現(xiàn)顯示(320)多個(gè)硬鏈接(312)與文件(302)之間的關(guān)系。在圖3的實(shí)例中,相對(duì)于文件系統(tǒng)(210)中的其他對(duì)象,窗口(340)分層地顯示了容器對(duì)象(333、342)和到文件的多個(gè)硬鏈接(314、315、316)。如上所述,容器對(duì)象用作其他對(duì)象的導(dǎo)管(conduits)。例如,目錄是容器對(duì)象,因?yàn)槟夸洶T如文件之類的其他對(duì)象和其他目錄。圖3的多個(gè)硬鏈接(314、315、316)指向與文件(302)對(duì)應(yīng)的單個(gè)硬鏈接(344)。圖3的窗口(340)還包含用于操縱具有多個(gè)硬鏈接的文件的按鈕(348)。圖3的按鈕(348)允許用戶刪除和重命名所有與文件(302)關(guān)聯(lián)的硬鏈接,以及查看和列出與文件(302)關(guān)聯(lián)的別名。
在圖3的示例性方法中,顯示(320)多個(gè)硬鏈接(312)與文件(302)之間的關(guān)系還包括顯示(322)至少一個(gè)代表文件和代表文件(302)的硬鏈接數(shù)的圖標(biāo)(330)。在圖3的實(shí)例中,代表文件和文件(302)的硬鏈接數(shù)的圖標(biāo)是代表文件的文檔圖標(biāo)并且圖標(biāo)(330)包含數(shù)字‘3’以表示文件系統(tǒng)(210)包含三個(gè)在命名空間(300)中與文件(302)關(guān)聯(lián)的硬鏈接。
雖然圖3的實(shí)例包括其中具有數(shù)字以表示到文件的硬鏈接數(shù)的圖標(biāo),但這只是用于說明而非進(jìn)行限制??梢杂扇魏螆D標(biāo)(330)或圖標(biāo)的屬性(如圖標(biāo)顏色、圖標(biāo)形狀、圖標(biāo)大小)、圖標(biāo)動(dòng)畫或本領(lǐng)域的技術(shù)人員應(yīng)了解的任何其他方式來表示到文件(302)的硬鏈接數(shù)。
在圖3的實(shí)例中,單個(gè)圖標(biāo)(330)同時(shí)表示文件和到該文件的硬鏈接數(shù)。再次地,這只是為了說明而非進(jìn)行限制。實(shí)際上,可以使用多個(gè)圖標(biāo)來表示文件(302)和到文件(302)的硬鏈接數(shù)。擁有至少一個(gè)表示文件(302)和到文件(302)的硬鏈接數(shù)的圖標(biāo)(330)有利地使得用戶可以可視地確定在窗口(340)中列出的許多文件中的哪些文件具有多個(gè)硬鏈接。
在圖3的示例性方法中,顯示(320)多個(gè)硬鏈接(312)與文件(302)之間的關(guān)系還包括顯示(324)兩個(gè)獨(dú)特的圖標(biāo)(332、334),每個(gè)圖標(biāo)都表示到具有多個(gè)硬鏈接的文件(302)的每個(gè)硬鏈接(314、315、316)。在圖3的實(shí)例中,兩個(gè)獨(dú)特的圖標(biāo)(332、334)表示到具有多個(gè)硬鏈接的文件(302)的每個(gè)硬鏈接。用于具有多個(gè)硬鏈接的文件的圖3的第一個(gè)獨(dú)特圖標(biāo)(332)在窗口(340)中與每個(gè)硬鏈接(314、315、316)的名稱連同其他容器對(duì)象一起顯示。將圖3的獨(dú)特圖標(biāo)(332)與代表文件系統(tǒng)(210)中的目錄的圖標(biāo)(333)區(qū)分開,表明獨(dú)特圖標(biāo)(332)表示到具有多個(gè)硬鏈接的文件的硬鏈接。圖3的另一個(gè)獨(dú)特圖標(biāo)(334)被實(shí)現(xiàn)為從窗口(340)的多個(gè)硬鏈接(314、315、316)到代表文件(302)的單個(gè)硬鏈接(344)的虛線箭頭。
在圖3中,兩個(gè)獨(dú)特圖標(biāo)(332和334)都用于顯示(324)獨(dú)特圖標(biāo),該獨(dú)特圖標(biāo)代表每個(gè)到具有多個(gè)硬鏈接的文件(302)的硬鏈接(314、315、316)。使用這兩個(gè)獨(dú)特圖標(biāo)(332、334)只是用于說明而非進(jìn)行限制。實(shí)際上,根據(jù)本發(fā)明,可以使用任意數(shù)量的獨(dú)特圖標(biāo)來顯示(324)代表到具有多個(gè)硬鏈接的文件(302)的每個(gè)硬鏈接(314、315和316)的獨(dú)特圖標(biāo)。
因?yàn)槲募到y(tǒng)(210)通常將大量硬鏈接與文件(302)關(guān)聯(lián),所以顯示(324)所有獨(dú)特圖標(biāo)(其代表到具有多個(gè)硬鏈接的文件的每個(gè)硬鏈接)可能使文件導(dǎo)航窗口(340)變得雜亂,產(chǎn)生不佳的可視外觀。用于顯示(320)多個(gè)硬鏈接(312)之間的關(guān)系的窗口(340)可以規(guī)定顯示有限數(shù)量的代表到具有多個(gè)硬鏈接的文件的每個(gè)硬鏈接的獨(dú)特圖標(biāo)。
圖3的獨(dú)特圖標(biāo)(332)包含‘H’并且獨(dú)特圖標(biāo)(334)包括虛線箭頭只是用于說明而非進(jìn)行限制。實(shí)際上,在圖3的實(shí)例中,可以使用代表硬鏈接的獨(dú)特圖標(biāo)與文件導(dǎo)航窗口(340)左側(cè)(342)的文件夾之間的任何差異,例如,使用不同的形狀、大小、顏色、突出顯示或本領(lǐng)域的技術(shù)人員應(yīng)了解的任何其他更改。
為了進(jìn)一步說明,圖4是示出了用于標(biāo)識(shí)(310)文件的多個(gè)硬鏈接(312)的示例性方法的流程圖。根據(jù)圖4的方法,標(biāo)識(shí)(310)文件的多個(gè)硬鏈接(312)包括遍歷(440)分層的命名空間以及為每個(gè)硬鏈接判定該硬鏈接是否指向其他硬鏈接。在圖4的示例性方法中,遍歷(440)分層的命名空間通常開始于根目錄并且通過掃描硬鏈接的目錄結(jié)構(gòu)來執(zhí)行。例如,在Unix文件系統(tǒng)中,‘/’代表命名空間中的根目錄并且它與包含根目錄中的所有條目的目錄結(jié)構(gòu)關(guān)聯(lián)。如上所述,硬鏈接是將命名空間中的文件名直接映射到代表文件的i節(jié)點(diǎn)的目錄條目。每個(gè)創(chuàng)建硬鏈接的目錄條目都包含諸如‘user.dat’之類的文件名和與特定i節(jié)點(diǎn)關(guān)聯(lián)的i編號(hào)。如上所述,目錄條目還可以創(chuàng)建到子目錄的鏈接。鏈接到子目錄的目錄條目包含對(duì)在該處存儲(chǔ)子目錄條目的位置的引用。Unix文件系統(tǒng)代表具有i節(jié)點(diǎn)的子目錄,但是這些i節(jié)點(diǎn)包含與代表文件的i節(jié)點(diǎn)的結(jié)構(gòu)不同的結(jié)構(gòu)。可以通過遍歷根目錄和命名空間中的所有從屬目錄(通過使用重復(fù)或遞歸算法)以及從每個(gè)目錄條目標(biāo)識(shí)分層命名空間中的硬鏈接來執(zhí)行遍歷(440)所述分層命名空間。
在圖4的示例性方法中,可以通過掃描每個(gè)硬鏈接的‘下一鏈接指針’字段來執(zhí)行為每個(gè)硬鏈接判定(441)該硬鏈接是否指向其他硬鏈接。如果‘下一鏈接指針’字段包含空值,則硬鏈接沒有指向其他硬鏈接?!乱绘溄又羔槨侄沃械姆强罩抵甘疚募嬖诙鄠€(gè)硬鏈接。
如果硬鏈接沒有指向其他硬鏈接,則圖4的方法包括判定(443)是否已遍歷分層的命名空間。如果尚未遍歷命名空間,則圖4的方法包括遍歷(440)分層的命名空間。
如果硬鏈接確實(shí)指向其他硬鏈接,則圖4的方法包括跟隨(442)指針從具有多個(gè)硬鏈接的文件到達(dá)硬鏈接的列表。通過跟隨在為每個(gè)硬鏈接判定(441)該硬鏈接是否指向其他硬鏈接時(shí)找到的硬鏈接的‘文件指針’字段到達(dá)硬鏈接代表的文件,可以執(zhí)行根據(jù)圖4的方法的跟隨(442)指針從具有多個(gè)硬鏈接的文件到達(dá)硬鏈接列表。在圖4的示例性方法中,還可以通過跟隨文件的‘主硬鏈接指針’字段到達(dá)與該文件關(guān)聯(lián)的主硬鏈接來執(zhí)行跟隨(442)指針從具有多個(gè)硬鏈接的文件到達(dá)文件的硬鏈接列表。
在跟隨指針(442)從具有多個(gè)硬鏈接的文件到達(dá)文件的硬鏈接列表之后,通過遍歷(444)列表來繼續(xù)圖4的方法??梢酝ㄟ^跟隨與文件關(guān)聯(lián)的硬鏈接中的‘下一文件指針’字段到達(dá)與文件關(guān)聯(lián)的另一硬鏈接來執(zhí)行根據(jù)圖4的方法的遍歷(444)列表。可以通過跟隨‘下一文件指針’字段從硬鏈接列表中的一個(gè)硬鏈接到另一個(gè)硬鏈接來執(zhí)行遍歷(444)列表,直到遍歷的當(dāng)前硬鏈接與遍歷的第一個(gè)硬鏈接匹配為止。判定遍歷的當(dāng)前硬鏈接與遍歷的第一個(gè)硬鏈接是否匹配的一種方法包括將遍歷的當(dāng)前硬鏈接的指針與遍歷的第一個(gè)硬鏈接的指針相比較。如果遍歷的當(dāng)前硬鏈接的指針與遍歷的第一個(gè)硬鏈接的指針匹配,則已遍歷整個(gè)硬鏈接列表。在圖4中,如果遍歷的當(dāng)前硬鏈接的指針與遍歷的第一個(gè)硬鏈接的指針不匹配,則繼續(xù)遍歷(444)列表。
在遍歷(444)列表之后,圖4的方法包括判定(443)是否已遍歷命名空間。如果尚未遍歷命名空間,則圖4的方法繼續(xù)遍歷(440)分層的命名空間。圖4的方法通常將繼續(xù),直到已遍歷命名空間的所有部分為止。
為了進(jìn)一步說明,圖5是示出了以上參考圖4討論的標(biāo)識(shí)文件的多個(gè)硬鏈接的方法的各方面的線條圖。如上所述,標(biāo)識(shí)文件的多個(gè)硬鏈接通常包括遍歷分層的命名空間以及為每個(gè)硬鏈接判定該硬鏈接是否指向其他硬鏈接。為每個(gè)硬鏈接判定該硬鏈接是否指向其他硬鏈接可以包括掃描每個(gè)硬鏈接的‘下一個(gè)鏈接指針’字段。圖5的實(shí)例示出了可用于為每個(gè)硬鏈接判定(441)該硬鏈接是否指向其他硬鏈接的每個(gè)硬鏈接(412、422、432)的‘下一個(gè)鏈接指針’字段(414、424、434)。在圖5中,每個(gè)‘下一個(gè)鏈接指針’字段(414、424、434)都包含對(duì)與文件(302)關(guān)聯(lián)的其他硬鏈接的引用。在圖5的實(shí)例中,‘下一個(gè)鏈接指針’(414)引用硬鏈接(422);‘下一個(gè)鏈接指針’(424)引用硬鏈接(432);并且‘下一個(gè)鏈接指針’(434)引用硬鏈接(412)。此包括硬鏈接(412、422、432)的鏈接列表結(jié)構(gòu)提供了到文件(302)的硬鏈接的列表(410)。此硬鏈接列表(410)包含所有將文件(302)映射到文件系統(tǒng)(210)的命名空間(300)中的硬鏈接。如果‘下一個(gè)鏈接指針’字段包含空值,則圖5的實(shí)例中的硬鏈接不指向其他硬鏈接。但是,‘下一個(gè)鏈接指針’字段中的非空值指示文件存在多個(gè)硬鏈接。
如上所述,如果硬鏈接不指向其他硬鏈接,則標(biāo)識(shí)文件的多個(gè)硬鏈接通常還包括跟隨指針從具有多個(gè)硬鏈接的文件到達(dá)文件的硬鏈接列表??梢酝ㄟ^跟隨硬鏈接的‘文件指針’字段來執(zhí)行跟隨指針從具有多個(gè)硬鏈接的文件到達(dá)文件的硬鏈接列表。圖5的實(shí)例示出了跟隨(442)指針從具有多個(gè)硬鏈接的文件到達(dá)文件的硬鏈接列表時(shí)使用的每個(gè)硬鏈接(412、422、432)的‘文件指針’字段(416、426、436)?!募羔槨侄?416、426、436)包含將每個(gè)硬鏈接(412、422、432)與文件(302)關(guān)聯(lián)的對(duì)文件(302)的引用。在Unix文件系統(tǒng)中,從硬鏈接到文件(302)的引用(416、426、436)是與文件(302)關(guān)聯(lián)的i編號(hào)。圖5的實(shí)例還示出了包含在文件(302)中的‘主硬鏈接指針’字段(400)。主硬鏈接(412)在跟隨指針從具有多個(gè)硬鏈接的文件到達(dá)文件的硬鏈接列表時(shí)使用。在圖5的實(shí)例中,文件(302)的‘主硬鏈接指針’字段(400)包含對(duì)代表文件系統(tǒng)(210)的命名空間(300)中的文件(302)的主硬鏈接(412)的引用。根據(jù)本發(fā)明的實(shí)施例,‘主硬鏈接指針’字段(400)有利地在文件(302)中提供了指向硬鏈接列表(410)的指針(400),指針(400)有助于標(biāo)識(shí)(310)文件(302)的多個(gè)硬鏈接。由于圖5的‘主硬鏈接指針’(400)用作從文件(302)到硬鏈接列表(410)的入口點(diǎn),所以硬鏈接被稱為‘主硬鏈接’(412)。
在跟隨指針從具有多個(gè)硬鏈接的文件到達(dá)文件的硬鏈接列表之后,通常通過遍歷所述列表來繼續(xù)標(biāo)識(shí)文件的多個(gè)硬鏈接??梢酝ㄟ^跟隨與文件關(guān)聯(lián)的硬鏈接中的‘下一個(gè)文件指針’字段到達(dá)與文件關(guān)聯(lián)的另一個(gè)硬鏈接來執(zhí)行遍歷列表。圖5的實(shí)例示出了用于遍歷(444)列表的硬鏈接(412、422、432)的‘下一個(gè)文件指針’字段(414、424、434)。在圖5中,硬鏈接(412、422、432)的每個(gè)‘下一個(gè)文件指針’字段(414、424、434)引用硬鏈接列表(410)中的下一個(gè)硬鏈接。
可以通過跟隨‘下一個(gè)文件指針’字段從硬鏈接列表中的一個(gè)硬鏈接到達(dá)另一個(gè)硬鏈接來執(zhí)行遍歷所述列表,直到遍歷的當(dāng)前硬鏈接與遍歷的第一個(gè)硬鏈接匹配為止。判定遍歷的當(dāng)前硬鏈接與遍歷的第一個(gè)硬鏈接是否匹配的一種方法包括將遍歷的當(dāng)前硬鏈接的指針與遍歷的第一個(gè)硬鏈接的指針相比較。如果遍歷的當(dāng)前硬鏈接的指針與遍歷的第一個(gè)硬鏈接的指針匹配,則已遍歷整個(gè)硬鏈接列表。
標(biāo)識(shí)具有多個(gè)硬鏈接的文件之后,刪除到該文件的一個(gè)或多個(gè)硬鏈接可能是有利的。因此,為了進(jìn)一步說明,圖6是示出了根據(jù)本發(fā)明的實(shí)施例的用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的示例性方法的流程圖,所述方法包括刪除(502)具有多個(gè)硬鏈接的文件(302)。根據(jù)圖6的實(shí)例,刪除(502)具有多個(gè)硬鏈接的文件(302)包括跟隨(504)指針(400)從具有多個(gè)硬鏈接的文件(302)到達(dá)文件(302)的硬鏈接列表(410),以及刪除(506)列表(410)中的所有硬鏈接。
在圖6的示例性方法中,文件導(dǎo)航窗口(340)包含‘全部刪除’按鈕(500),按鈕(500)有利地允許用戶在查找單個(gè)硬鏈接時(shí)刪除所有到文件(302)的硬鏈接(412、422、432)。圖6的‘全部刪除’按鈕(500)使得無需在命名空間中進(jìn)行搜索并單獨(dú)地刪除每個(gè)到文件(302)的硬鏈接。
在圖6的示例性方法中,可以通過跟隨文件(302)的‘主硬鏈接指針’字段(400)到達(dá)與文件(302)關(guān)聯(lián)的主硬鏈接(412)來執(zhí)行跟隨(504)指針(400)從具有多個(gè)硬鏈接的文件(302)到達(dá)文件(302)的硬鏈接列表(410)。如上所述,主硬鏈接(412)是包含代表命名空間中的文件(302)的所有硬鏈接的硬鏈接列表(410)的元素。主硬鏈接(412)用作從文件(302)到硬鏈接列表(410)的入口點(diǎn)。在圖6中,硬鏈接列表(410)包含三個(gè)硬鏈接主硬鏈接(412)、硬鏈接(422)和硬鏈接(432)。
在圖6的示例性方法中,可以通過從文件(302)本身取消鏈接每個(gè)與硬鏈接關(guān)聯(lián)的文件名來執(zhí)行刪除(506)列表(410)中的所有硬鏈接。從文件(302)取消鏈接文件名將從包含硬鏈接的目錄移除硬鏈接條目??梢酝ㄟ^遍歷硬鏈接列表(410)的迭代算法來執(zhí)行從文件(302)本身取消鏈接每個(gè)與硬鏈接關(guān)聯(lián)的文件名,所述算法利用例如與以下偽代碼函數(shù)‘remove()’類似的函數(shù)int remove(const char*path);以上示例性的remove()函數(shù)移除了由‘path’命名的目錄條目并遞減代表文件的i節(jié)點(diǎn)的鏈接計(jì)數(shù)。當(dāng)代表文件的i節(jié)點(diǎn)的鏈接計(jì)數(shù)達(dá)到零時(shí),解除分配文件在文件系統(tǒng)中占據(jù)的空間并且文件停止存在。
已標(biāo)識(shí)具有多個(gè)硬鏈接的文件之后,重命名到文件的多個(gè)硬鏈接中的一個(gè)或多個(gè)硬鏈接可能是有利的。因此,為了進(jìn)一步說明,圖7是示出了根據(jù)本發(fā)明的實(shí)施例的用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的示例性方法的流程圖,所述方法包括重命名(602)到文件(302)的鏈接。根據(jù)圖7的示例性方法的重命名(602)到文件(302)的鏈接包括接收(604)來自用戶的新文件名(601),跟隨(606)指針(400)從具有多個(gè)硬鏈接的文件(302)到達(dá)文件(302)的硬鏈接列表(410),以及將該新的名稱(601)指派(607)給列表(410)中的硬鏈接。
在圖7的示例性方法中,文件導(dǎo)航窗口(340)包含‘全部重命名’按鈕(600),按鈕(600)有利地允許用戶在查找硬鏈接時(shí)重命名所有到文件(302)的硬鏈接(412、422、432)。調(diào)用圖7的‘全部重命名’按鈕(600)使得不必在命名空間中進(jìn)行搜索并單獨(dú)地重命名每個(gè)到文件(302)的硬鏈接。
在圖7的示例性方法中,可以通過向用戶提供文本框(其允許輸入包含新文件名(601)的字符)來執(zhí)行接收(604)來自用戶的新文件名(601)。根據(jù)圖7的實(shí)例的接收(604)來自用戶的新文件名(601)還可以包括驗(yàn)證包含新文件名(601)的字符以確保新文件名(601)符合文件系統(tǒng)的要求。在圖7的實(shí)例中,接收(604)來自用戶的新文件名(601)還可以包括在電子存儲(chǔ)裝置中存儲(chǔ)新文件名(601)。
在圖7的示例性方法中,可以通過跟隨文件(302)的‘主硬鏈接指針’字段(400)到達(dá)與文件(302)關(guān)聯(lián)的主硬鏈接(412)來執(zhí)行跟隨(606)指針(400)從具有多個(gè)硬鏈接的文件(302)到達(dá)文件(302)的硬鏈接列表(410)。如上所述,主硬鏈接(412)是包含所有代表命名空間中的文件(302)的硬鏈接的硬鏈接列表(410)的元素。主硬鏈接(412)用作從文件(302)到硬鏈接列表(410)的入口點(diǎn)。在圖7中,硬鏈接列表(410)包含三個(gè)硬鏈接主硬鏈接(412)、硬鏈接(422)和硬鏈接(432)。
在圖7的示例性方法中,將新的名稱(601)指派(607)給列表(410)中的硬鏈接可以包括重命名每個(gè)與硬鏈接列表(410)中的硬鏈接(412、422、432)關(guān)聯(lián)的文件名。重命名與硬鏈接關(guān)聯(lián)的文件名可以包括將新文件名(601)的值指派給硬鏈接的‘名稱’字段的值。可以通過遍歷硬鏈接列表(410)的迭代算法來執(zhí)行根據(jù)圖7的實(shí)例的將新的名稱(601)指派(607)給列表(410)中的硬鏈接,所述算法利用例如與以下偽代碼函數(shù)‘rename()’類似的函數(shù)int rename(const char*old,const char*new);示例性的rename()函數(shù)將其名稱包含在‘old’中的文件名稱更改為包含在‘new’中的名稱。在圖7的實(shí)例中,當(dāng)前與每個(gè)硬鏈接(412、422、432)關(guān)聯(lián)的文件名代表‘old’而新文件名(601)代表‘new’。
已標(biāo)識(shí)具有多個(gè)硬鏈接的文件后,顯示到文件的多個(gè)硬鏈接中的一個(gè)或多個(gè)硬鏈接可能是有利的。為了進(jìn)一步說明,圖8是示出了根據(jù)本發(fā)明的實(shí)施例的用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的示例性方法的流程圖,所述方法包括顯示(702)到文件(302)的硬鏈接的路徑名。根據(jù)圖8的示例性方法的顯示(702)到文件(302)的硬鏈接的路徑名(709)包括跟隨(706)指針(400)從具有多個(gè)硬鏈接的文件(302)到達(dá)文件(302)的硬鏈接列表(410);對(duì)于列表(410)中的每個(gè)硬鏈接,從所述硬鏈接檢索(707)名稱;以及對(duì)于列表(410)中的每個(gè)硬鏈接,遍歷(708)層次結(jié)構(gòu)以到達(dá)所述層次結(jié)構(gòu)的根以便檢索所述硬鏈接的路徑。
在圖8的示例性方法中,文件導(dǎo)航窗口(340)包含‘列出別名’按鈕(700),按鈕(700)有利地允許用戶查看到文件(302)的硬鏈接(412、422、432)的路徑名(709)的所有文本表示(710)的顯示。顯示所有硬鏈接(412、422、432)的路徑名的文本表示(710)允許用戶在命名空間中輕松找到代表文件(302)的硬鏈接的其他位置。
在圖8的示例性方法中,文件導(dǎo)航窗口(340)還包含‘查看別名’按鈕(701),按鈕(701)有利地允許用戶顯示到文件(302)的硬鏈接(412、422、432)的路徑名(709)的圖形表示(712)。顯示硬鏈接(412、422、432)的路徑名的圖形表示(712)有助于用戶在命名空間中將代表文件(302)的硬鏈接的其他位置可視化。
在圖8的示例性方法中,可以通過跟隨文件(302)的‘主硬鏈接指針’字段(400)到達(dá)與文件(302)關(guān)聯(lián)的主硬鏈接(412)來執(zhí)行跟隨(706)指針(400)從具有多個(gè)硬鏈接的文件(302)到達(dá)文件(302)的硬鏈接列表(410)。如上所述,主硬鏈接(412)是包含所有代表命名空間中的文件(302)的硬鏈接的硬鏈接列表(410)的元素。主硬鏈接(412)用作從文件(302)到硬鏈接列表(410)的入口點(diǎn)。在圖8中,硬鏈接列表(410)包含三個(gè)硬鏈接主硬鏈接(412)、硬鏈接(422)和硬鏈接(432)。
在圖8的示例性方法中,為列表(410)中的每個(gè)硬鏈接從該硬鏈接檢索(707)名稱可以包括掃描硬鏈接列表(410)中每個(gè)硬鏈接(412、422、432)的‘名稱’字段(418、428、438)的值??梢酝ㄟ^遍歷硬鏈接列表(410)的迭代算法來執(zhí)行根據(jù)圖8的實(shí)例的為列表(410)中的每個(gè)硬鏈接從該硬鏈接檢索(707)名稱,所述算法利用例如以下偽代碼結(jié)構(gòu)和函數(shù)void readhardlink(struct dirent*hardlink);struct dirent{long d_inode;char *d_name;
struct dirent *next_link;};示例性的readhardlink()函數(shù)讀取硬鏈接列表(410)中‘structdirent’類型的硬鏈接的目錄條目。結(jié)構(gòu)的‘d_inode’字段包含與代表文件(302)的i節(jié)點(diǎn)關(guān)聯(lián)的硬鏈接(412、422、432)的i編號(hào)。結(jié)構(gòu)的‘d_name’字段包含每個(gè)硬鏈接(412、422、432)的文件名(418、428、438)。‘next_link’字段包含指向硬鏈接列表(410)中的硬鏈接的下一個(gè)目錄條目的指針。
在圖8的示例性方法中,對(duì)于列表(410)中的每個(gè)硬鏈接,遍歷(708)層次結(jié)構(gòu)以到達(dá)所述層次結(jié)構(gòu)的根以便檢索所述硬鏈接的路徑可以包括對(duì)于列表(410)中的每個(gè)硬鏈接(412、422、432),掃描‘..’條目的當(dāng)前目錄,跟隨‘..’條目到父目錄,以及讀取前一目錄的名稱。Unix文件系統(tǒng)中的每個(gè)目錄都包含自身(‘.’)及其父目錄(‘..’)的條目。‘.’條目包含代表目錄本身的i節(jié)點(diǎn)的i編號(hào),而‘..’條目包含代表父目錄的i節(jié)點(diǎn)的i編號(hào)。根目錄的‘.’和‘..’條目都引用根目錄的i節(jié)點(diǎn)??梢允褂玫蜻f歸算法來執(zhí)行根據(jù)圖8的實(shí)例的掃描‘..’條目的當(dāng)前目錄,跟隨‘..’條目到父目錄,以及讀取前一目錄的名稱,直到‘.’和‘..’條目引用同一i編號(hào)為止。根據(jù)圖8的實(shí)例的讀取前一目錄的名稱可以包括在每次迭代或遞歸調(diào)用期間通過將文件名與目錄名串接來創(chuàng)建路徑名(709)。
在圖8的示例性方法中,可以通過在文件導(dǎo)航窗口(340)中以文本格式(710)顯示路徑名(709)來執(zhí)行顯示(702)路徑名(709)。還可以通過以圖形格式(712)(其在命名空間中可視地顯示硬鏈接(412、422、432)的位置)顯示路徑名(709)來執(zhí)行根據(jù)圖8的實(shí)例的顯示(702)路徑名(709)。
很大程度上在用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的完整功能計(jì)算機(jī)系統(tǒng)的上下文中描述了本發(fā)明的示例性實(shí)施例。但是,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,本發(fā)明還可以包含在布置在用于與任何適合的數(shù)據(jù)處理系統(tǒng)一起使用的信號(hào)承載介質(zhì)上的計(jì)算機(jī)程序產(chǎn)品中。此類信號(hào)承載介質(zhì)可以是用于機(jī)器可讀信息的傳輸介質(zhì)或可記錄介質(zhì),包括磁介質(zhì)、光介質(zhì)或其他適合的介質(zhì)??捎涗浗橘|(zhì)的實(shí)例包括硬盤驅(qū)動(dòng)器中的磁盤或軟盤、用于光學(xué)驅(qū)動(dòng)器的光盤、磁帶以及本領(lǐng)域的技術(shù)人員應(yīng)了解的其他介質(zhì)。傳輸介質(zhì)的實(shí)例包括用于語音通信的電話網(wǎng)絡(luò)、諸如以太網(wǎng)TM之類的數(shù)字?jǐn)?shù)據(jù)通信網(wǎng)絡(luò)、使用網(wǎng)際協(xié)議通信的網(wǎng)絡(luò)以及萬維網(wǎng)。本領(lǐng)域的技術(shù)人員將立即認(rèn)識(shí)到,任何具有適合的編程裝置的計(jì)算機(jī)系統(tǒng)都將能夠執(zhí)行包含在程序產(chǎn)品中的本發(fā)明的方法的步驟。本領(lǐng)域的技術(shù)人員將立即認(rèn)識(shí)到,雖然在本說明書中描述的某些示例性實(shí)施例面向在計(jì)算機(jī)硬件上安裝和執(zhí)行的軟件,但是作為固件或硬件實(shí)現(xiàn)的替代實(shí)施例也在本發(fā)明的范圍之內(nèi)。
從以上描述可以理解,可以在本發(fā)明的各個(gè)實(shí)施例中做出修改和更改而不偏離本發(fā)明的真正精神。本說明書中的描述只是出于示例目的并且不應(yīng)被理解為進(jìn)行限制。本發(fā)明的范圍僅由以下權(quán)利要求的語言來限制。
權(quán)利要求
1.一種圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的方法,所述方法包括標(biāo)識(shí)文件的多個(gè)硬鏈接;以及顯示所述多個(gè)硬鏈接與所述文件之間的關(guān)系。
2.根據(jù)權(quán)利要求1的方法,其中硬鏈接包括到文件的直接將該文件映射到命名空間中的鏈接。
3.根據(jù)權(quán)利要求1的方法,其中顯示所述多個(gè)硬鏈接與所述文件之間的關(guān)系還包括顯示至少一個(gè)代表所述文件和代表到所述文件的硬鏈接數(shù)的圖標(biāo)。
4.根據(jù)權(quán)利要求1的方法,其中顯示所述多個(gè)硬鏈接與所述文件之間的關(guān)系還包括顯示代表每個(gè)到具有多個(gè)硬鏈接的文件的硬鏈接的獨(dú)特圖標(biāo)。
5.根據(jù)權(quán)利要求1的方法,其中標(biāo)識(shí)文件的多個(gè)硬鏈接還包括跟隨指針從具有多個(gè)硬鏈接的文件到達(dá)所述文件的硬鏈接的列表;以及遍歷所述列表。
6.根據(jù)權(quán)利要求1的方法,還包括提供到所述文件的硬鏈接的列表;以及在所述文件中提供到所述列表的指針。
7.根據(jù)權(quán)利要求1的方法,其中標(biāo)識(shí)文件的多個(gè)硬鏈接還包括遍歷分層的命名空間;以及為每個(gè)硬鏈接判定該硬鏈接是否指向其他硬鏈接。
8.根據(jù)權(quán)利要求1的方法,還包括刪除具有多個(gè)硬鏈接的文件,其中包括跟隨指針從所述具有多個(gè)硬鏈接的文件到達(dá)所述文件的硬鏈接的列表;以及刪除所述列表中的所有所述硬鏈接。
9.根據(jù)權(quán)利要求1的方法,還包括重命名到所述文件的所述硬鏈接,其中包括接收來自用戶的新文件名;跟隨指針從所述具有多個(gè)硬鏈接的文件到達(dá)所述文件的硬鏈接的列表;以及將所述新的名稱指派給所述列表中的所述硬鏈接。
10.根據(jù)權(quán)利要求1的方法,還包括顯示到所述文件的所述硬鏈接的路徑名,其中包括跟隨指針從所述具有多個(gè)硬鏈接的文件到達(dá)所述文件的硬鏈接的列表;對(duì)于所述列表中的每個(gè)硬鏈接,從所述硬鏈接檢索名稱;以及對(duì)于所述列表中的每個(gè)硬鏈接,遍歷層次結(jié)構(gòu)以到達(dá)所述層次結(jié)構(gòu)的根以便檢索所述硬鏈接的路徑。
11.一種用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的裝置,所述裝置包括計(jì)算機(jī)處理器;可操作地連接到所述計(jì)算機(jī)處理器的計(jì)算機(jī)存儲(chǔ)器,所述計(jì)算機(jī)存儲(chǔ)器其中布置有計(jì)算機(jī)程序指令,所述計(jì)算機(jī)程序指令能夠執(zhí)行以下步驟標(biāo)識(shí)文件的多個(gè)硬鏈接;以及顯示所述多個(gè)硬鏈接與所述文件之間的關(guān)系。
12.根據(jù)權(quán)利要求11的裝置,其中所述能夠顯示所述多個(gè)硬鏈接與所述文件之間的關(guān)系的計(jì)算機(jī)程序指令還包括能夠顯示至少一個(gè)代表所述文件和代表到所述文件的硬鏈接數(shù)的圖標(biāo)的計(jì)算機(jī)程序指令。
13.根據(jù)權(quán)利要求11的裝置,其中所述能夠顯示所述多個(gè)硬鏈接與所述文件之間的關(guān)系的計(jì)算機(jī)程序指令還包括能夠顯示代表每個(gè)到具有多個(gè)硬鏈接的文件的硬鏈接的獨(dú)特圖標(biāo)的計(jì)算機(jī)程序指令。
14.根據(jù)權(quán)利要求11的裝置,其中所述能夠標(biāo)識(shí)文件的多個(gè)硬鏈接的計(jì)算機(jī)程序指令還包括能夠執(zhí)行以下步驟的計(jì)算機(jī)程序指令跟隨指針從具有多個(gè)硬鏈接的文件到達(dá)所述文件的硬鏈接的列表;以及遍歷所述列表。
15.根據(jù)權(quán)利要求11的裝置,其中所述能夠標(biāo)識(shí)文件的多個(gè)硬鏈接的計(jì)算機(jī)程序指令還包括能夠執(zhí)行以下步驟的計(jì)算機(jī)程序指令遍歷分層的命名空間;以及為每個(gè)硬鏈接判定該硬鏈接是否指向其他硬鏈接。
16.一種用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品布置在信號(hào)承載介質(zhì)上,所述計(jì)算機(jī)程序產(chǎn)品包括執(zhí)行權(quán)利要求1至10中的任一權(quán)利要求的方法的步驟的計(jì)算機(jī)程序指令。
全文摘要
本發(fā)明提供了用于圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接的方法、裝置和計(jì)算機(jī)程序產(chǎn)品,包括標(biāo)識(shí)文件的多個(gè)硬鏈接以及顯示所述多個(gè)硬鏈接和所述文件之間的關(guān)系。某些實(shí)施例還包括包含到文件的直接將所述文件映射到命名空間中的鏈接的硬鏈接。圖形地顯示到文件系統(tǒng)中的文件的分層硬鏈接還包括提供到所述文件的硬鏈接的列表以及在所述文件中提供指向所述列表的指針。某些實(shí)施例還包括刪除所述具有多個(gè)硬鏈接的文件;重命名到所述文件的所述硬鏈接;以及顯示到所述文件的所述硬鏈接的路徑名。
文檔編號(hào)G06F17/30GK1900930SQ20061009314
公開日2007年1月24日 申請(qǐng)日期2006年6月22日 優(yōu)先權(quán)日2005年7月21日
發(fā)明者T·S·卡爾松, R·M·泰斯 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司