专利名称:图形显示到文件系统中的文件的分层硬链接的方法和装置的制作方法
技术领域:
本发明的领域是数据处理,或者更具体地说,是用于图形地显示到文件系统中的文件的分层硬链接的方法、装置和产品。
背景技术:
通常将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·泰斯 申请人:国际商业机器公司