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