首页 / 文件管理方法

文件管理方法无效专利 发明

技术领域

本发明涉及一种管理包含在记录介质中的文件的方法。

相关背景技术

在传统技术中,当诸如图像显示软件、电子相册软件等应用程序处理包含在诸如光盘、磁盘、磁光盘等记录介质中的诸如运动图像、静止图像、音频等信息时,它们会通过诸如UDF、FAT等文件系统访问盘上的各个信息,如图2A所示。
当在打印、列表显示、滑动显示等过程中必须对一些文件进行分组时,要根据各个组如播放列表文件、DPOF文件等准备描述成员文件的管理文件和必要信息,并实现对分组文件的管理。
然而,如在传统系统中,当应用程序直接利用文件系统访问各个文件时,如图2A所示,通常由于文件数量和组数量的增大而使对文件和组的管理变得困难,并造成搜索必要信息需花费过多时间的问题。此外,要通过文件系统来指定一文件,必须由其扩展名来判断该文件的类型,而且将具有相同扩展名类型的文件如视频和音频互相区分开来并不容易,这对快速搜索造成障碍。
为获得许多记录文件关于时间序列的再现,必须通过访问所有文件来对这些文件按记录时间顺序进行排序。这样,有可能采用一种使用一些目录结构和文件名的方法来节省时间序列信息的方案,但这种方案减少了目录结构和文件名的自由度,从而在文件管理方面并不方便。
在上述使用管理文件的方法情形中,必须为各个组准备管理文件。为此,为获得包含在各个管理文件中有关成员或其他信息,必须特意打开和检查各个管理文件,这在文件管理方面并不方便。此外,为确定某一文件是否包含在任何管理文件中,必须打开和检查所有的管理文件,且难以确定一文件是否被删除,或是否包含在管理文件中。另外,根据使用管理文件的应用程序,以不同的格式来描述这些管理文件,这会造成对某一应用程序的管理文件不能适用于另一应用程序的通用性问题。
在管理文件的使用中,为了访问每个文件应用程序直接使用文件系统,从而不能解决搜索必要信息必须花费过多时间的问题。

具体实施方式

1.CMF的结构首先,将描述CMF(内容管理文件)的结构。此处特别指出,以下描述的目录结构,文件名称,CMF特征值等仅作为示例,而本发明还能应用在不同于此实施例的情形。为了在盘上等记录数据,通常使用基于如FAT,UDF等文件系统的目录结构并在其中记录文件。如图26显示此次由CMF管理目录结构的示例,其中,在根目录[80]下具有一用于打印等管理的MISC目录[81],一用于记录静止图像的DCIM目录[82],和一用于记录运动图像(电影)、音频、播放列表等的VIDEO目录[83]。在DCIM目录[82]下存在名称头部各有一三位数字编号的静止图像目录[84]。在VISEO目录[83]下存在名称头部各有一三位数字编号的电影目录[85],音频目录[86],和播放列表目录[87]。确定各个目录名称头部三位数字的编号,以便对相同种类的不同目录不会赋予相同的三位数字编号。在静止图像,电影,音频和播放列表目录下分别记录静止图像文件[92],电影文件[93],音频文件[94]和播放列表[95],在它们各自文件名中头部四个字母后具有一四位数字编号。确定在文件名中的这四位数字编号,以便对在相同目录中相同种类的不同文件不会赋予相同的四位数字编号。CMF是管理这些文件,对文件分组等的文件,且CMF具有通用性,从而能从多个应用程序对其访问(图2A和图2B)。由于CMF自身是由文件系统管理的文件[90],因而将其存储于盘上的某个地方(在此实施例中为在根目录[80]下)。
图1显示CMF的总体结构。CMF具有由一个16K字节长的管理信息(管理信息[1])和数个各为8K字节长的信息组组合的结构,并且每个8K字节的信息组被引用为一信息块。标准的信息块包括六种:父组信息[2],父组成员信息[3],子组信息[4],子组成员信息[5],文件信息[6]和文本信息[7],可按父组层和子组层的两层体系创建组。下面讨论还具有的其他信息块:供应商专用信息(Vendor SpecificInformation)[8]和虚拟信息(Dummy Information)[9]。供应商专用信息[8]用于记录专用于供应商的信息,虚拟信息[9]用于预留一区域。用于管理在块中空白区域的空间位图(Space Bitmap)位于每一信息块的首部,且包含有“1”和“0”,“1”表示存在数据的区域,“0”表示空白区域。在初始阶段每一信息块中都存在空白区域,但当添加信息使信息块充满数据时,在CMF的尾部会添加一8KB的新信息块。该信息块的长度可为除8KB之外的任何其他长度,且数据块相互之间可具有其各不相同的长度。不过,每一信息块的长度应为该记录介质纠错单元(ECC块,error correction unit)除以任一2的乘方(1,2,4,8,16,…)得到的商。即,当EEC块长度为23KB时,每一信息块的长度可为23KB,16KB,8KB,4KB,…中任意一个。这允许每一信息块的首部总是与一ECC块的首部相重合,从而避免将一个信息块记录在两个或多个ECC块上。
管理信息[1]是用于整个CMF管理的部分,它包括存储普通信息记录的普通信息[11],存储文件类型的表的文件类型表[12],存储创建或编辑CMF的供应商的ID表的供应商ID表[13],存储信息块类型表的块类型表[14],管理各信息块中对象数量的数量管理表[15],和管理这些信息块的信息块表(Information Block Table)[16]。父组信息[2]是存储关于父组信息记录的部分,它包括用于空白区域管理的空间位图[21]和包含实际信息描述的父组描述符[22]。父组成员信息[3]是存储关于包含在父组中子组信息记录的部分,它包括用于空白区域管理的空间位图[31]和作为成员表的父组成员描述符[32]。同样,子组信息[4]是存储关于子组信息记录的部分,它包括用于空白区域管理的空间位图[41]和存储实际信息描述的子组描述符[42]。子组成员信息[5]是存储关于包含在子组中文件信息记录的部分,它包括用于空白区域管理的空间位图[51]和作为成员表的子组成员描述符[52]。文件信息[6]是存储文件信息记录的部分,它包括用于空白区域管理的空间位图[61]和作为文件信息的文件描述符[62]。文本信息[7]是存储文本信息记录的部分,它包括用于空白区域管理的空间位图[71]和作为文本信息的文本描述符[72]。
下面将描述各个信息块的详细结构。图3显示出管理整个CMF管理信息[1]的结构。如上所述,管理信息[1]包括普通信息[11],文件类型表[12],供应商ID表[13],块类型表[14],数量管理表[15],和信息块表[16],其中,信息块表[16]包括对应于各个信息块的信息块描述符[17]。由于信息块描述符[17]的记录顺序与信息块的记录顺序一致,从而通过查阅信息块表[16],能找到在CMF文件中任何所需信息块的记录位置。其数据长度设置如下:512字节用于普通信息[11];1024字节用于文件类型表[12];512字节用于供应商ID表[13];512字节用于块类型表[14];512字节用于数量管理表[15];8字节用于在信息块表[16]中的各个信息块。当有B个信息块时,则其总长为3072+8×B字节。因此,在管理信息块[1]中可存储信息块描述符的最大数量为1664。
图4显示包含在管理信息[1]中普通信息[11]的结构。该部分包括普通的信息,如标识,日期和时间,在CMF中包含的信息块数量,声明等信息。CMF标识(CMF Identifier)在CMF首部存储了文件标识信息的记录,设置CMF版本(CMF Version)是用于保存关于在CMF结构未来版本的情形中采用哪种结构描述的标识信息。文件长度(FileSize)表示整个CFM的长度,在盘初始状态时为64K字节。供应商标识(Vendor Identifier)和产品标识(Product Identifier)用于标识CMF制造商和制造机器的标识符,各个供应商对这些标识可自由分配字符串。盘标识(Disk Identifier)包括盘内容的标识信息,其中记录一UUID(全球唯一标识,Universally Unique Identifier)。由于在盘初始化中会修改该信息,因而在各个盘中它不会一成不变。当制作盘的拷贝时,盘标识也将被拷贝。因此盘标识也不会专属于各个盘。该盘标识可用来确定两个盘中一个盘是否为另一盘的拷贝。
初始时间(Initial Time),创建时间(Create Time)和修改时间(Modify Time)分别表示初始化的日期时间,CMF的创建日期时间和CMF的修改日期时间,每一信息均为12字节,并采用与UDF文件系统日期时间信息相同的格式。初始时间和创建时间通常包含相同的数据。不过,对于盘的拷贝来说,初始时间包含原始盘的信息,而创建时间包含创建该拷贝的日期时间信息。这表示,通过比较初始时间与创建时间,可确定出盘是原始盘还是拷贝盘。当修改盘的内容时,也会在CMF中反映出这些改动,并更新修改时间。通过彼此比较两张盘的盘标识和修改时间,若它们相符,从而可以确定两张盘的内容相同。
自动启动类型(Auto Start Type),自动启动属性(Auto StartAttribute)和自动启动对象标识(Auto Start Object Identifier)包含关于插入盘或关于启动应用程序的信息。自动启动类型包括被自动启动的数据(组或文件)类型,自动启动属性设置关于是否激活自动启动,自动启动对象标识表示所要自动启动的组和文件的组对象ID或文件编号。信息块数量(Number of Information Blocks)存储包含在CMF中信息块的数量,声明长度(Comment Length)表示一声明的长度,声明(Comment)表示一具有127字节的字符串。使用与文件系统中所用相同的字符编码描述该字符串。在尾部设置预留区域(reserved area),其长度可使普通信息的总长达到512字节。
图5显示包含在管理信息[1]中文件类型表[12]的结构示例。该表基本为文件扩展名的表,其中,不同类型的文件即使具有相同的扩展名(电影,音频等)也能够相互区分开。例如,在文件具有相同扩展名“MPG”的情形中,用类型ID=3来标识包含运动图像和音频(电影)的文件,用类型ID=4标识仅包含音频的文件。每一扩展名都有长达4个字节的存储区域,扩展名比四个字节短的情形将剩余区域填充0×00。总共可注册256种扩展名类型,并将供应商专用的扩展名注册在编号为128到254之间。在编号0的无效(NULL)值表示文件没有扩展名,在编号255的“未指定(Not Specified)”表示不在文件类型表[12]中注册的扩展名。
图6显示包含在管理信息[1]中供应商ID表[13]的结构,该表用于标识创建供应商专用信息块(Vendor Specified Information Block)的供应商。每一供应商ID都具有4个字节区域,其中三个字节实际用于由IEEE管理的专用于供应商的ID(公司ID),将其用于以太网等网卡中的(前三个字节的)MAC地址,而其余一个字节用0×00填充。总共可允许注册128个ID,不过由于ID=0为用于表示公共信息类型(common Information Type)的缺省ID,且ID=127表示无ID(无信息,No Information),因而实际可注册126个供应商。
图7显示包含在管理信息[1]中块类型表[14]的结构,该表存储了一列信息块的类型。它有可能存储256个如图8所示两个字节长的信息块类型描述符,每一描述符表示由各占一个字节的供应商ID(如图6所示)和信息类型(如图9所示)的组合。可将信息类型按少于256种类型进行分类,如图9所示,其中可将类型0到127用于系统,类型128到255用于用户(供应商专用)。在用于系统的类型中,预先指定了类型0到8(标准对象信息)和类型127(虚拟信息),并预留出类型9到126。类型0,7和8未被使用,这将在下面进行讨论。在块类型表(如图7所示),类型0到8被预先确定并含有为0的供应商ID(缺省ID)和0到8的信息类型。由于信息类型0,7,和8(如图9所示)未被使用,因而块类型0,7,和8未被使用。
图10显示包含在管理信息[1]中数量管理表[15]的结构,且每一块类型(Block Type)表示在块类型表[14](如图7所示)中所示相应信息块类型中包含对象的所有数量。这就是包含在相同信息块类型的所有信息块中的对象总数,例如,若CMF包含十个文件信息块[6],则在这种情形中对象数量是其中在十个文件信息块中包含的所有文件总数。可将与信息块类型相应(如图7所示)的256个对象数量各存储在两个字节中(或在65536个对象之内)。即,在信息块类型从1到6的情形中,其中的内容分别为父组数,父组成员数,子组数,子组成员数,文件数和文本数。信息块类型0表示未被使用,但相应与信息块类型7,8的部分分别表示用于父组和子组的声明数量。这是为了将用于组的声明数量从用于其他声明的数量区分开来,因为文本信息可包含组信息的声明和其他声明(供应商专用信息及其他)。通过从总文本数中减去用于组的声明数量,可确定用于除组信息之外的其他信息的文本描述符数量。
图11显示在信息块表[16]中作为一元素的信息块描述符[17]的结构。这种信息块描述符[17]的集合构成信息块表[16]。块类型表示信息块的类型,它包括在块类型表[14]中表示的值。块属性表示信息块的属性信息,在其中所包含的内容根据信息块的类型而不同。对于文件信息块,块属性包含关于是否含有各文件信息和目录信息的信息。对于文本信息块,块属性包含关于是否含有各父组,子组以及其他声明信息的信息。块属性还包含关于是否含有对所有信息块来说都共有的空间位图的属性信息。
块长度(size)表示信息块的长度,它以2KB的整数倍来表示。在本实施例中,由于所有信息块都具有8K字节长度,因而该块长度为4。描述符长度表示在信息块中包含的一个描述符的长度,利用它可计算出最大描述符数(n)和包含在信息块中首部描述符的位置(p)。(假设块长度=b字节,且描述符长度=d字节)最大描述符数:n=int((b×8)/(1+8×d))首部描述符位置:p=b-d×n块专用数据表示专用于信息块的信息,在系统信息块的情形(信息类型从0到127),它存储数据长度和对象数量的信息,如图12所示。数据长度是在信息块中有效数据的长度,不管在数据中间是否存在空白区域,该长度为到最后数据的长度。对象数量为包含在信息块中数据的数量,它包括描述符的数量。通过在每一块中的空间位图来管理在各个块中的空白区域,通过上述在CMF头部的管理块来管理在每一块中空白区域数量和数据长度。因此,可以减少驻留在内存中的数据量,并同样减少搜索量。
由于记录在各个信息块中的对象数量对于各个类型是固定的,可通过从最大可记录数量中减去对象数量来计算空白区域的数量。此外,用描述符长度乘以对象数量可计算出必需的数据长度,通过对其比较数据长度,可确定在数据中间是否存在空白区域。
图13显示存储关于父组和子组普通信息记录的父组信息块[2]和子组信息块[4]的结构,这两种信息块都具有相同的结构。该结构为一张记录了在8K字节信息块中以64字节单位(单元)的父/子组描述符[24,44]的组信息的表。组信息[24,44]的集合为父/子组描述符[22,42]。父/子组描述符空间位图[21,41]表示在64字节单位的各个单元中是否存储有效的组信息。在一个信息块中最多能存储127个组信息片(groupinformation pieces)[24,44],并且空间位图[21,41]使用16字节以一个位/单元的形式管理在各个单元中有效数据的有/无。即,在空间位图[21,41]中用值为“1”的一位表示在一单元中存储了有效的组信息,而用“0”表示在一单元中没有写入有效信息。因此,可在单元结束后用“0”写入信息。预留区域[23,43]是在空间位图[21,41]中从以64字节单元中剩余出来的区域。若父/子组描述符[24,44]的组信息数量为G,则有效数据的长度为64+64×G字节。本发明中,在整个CMF中父组和子组的组描述符最大数量各为16384。
图14显示组描述符[24,44]的结构,且父组和子组具有相同的结构。组类型包含关于该组是父组还是子组的信息,以及关于该组是由用户创建的用户定义组还是由系统自动创建的系统组的信息。在系统组的情形中,记录了组的类型,而在用户定义组的情形中,用户能确定组的类型。在此实施例中,由系统自动创建的组可包含一基于记录顺序的日期组和一作为记录了包含在播放列表中文件的表的列表组。一日期子组的表作为一日期父组,一播放列表子组的表作为一播放列表父组。由于日期子组的成员可包含所有类型的文件,因而不管文件类型如何,通过使用日期组可再现记录顺序。
组属性包括组的属性信息,这些信息为关于该组是否被删除的信息,写保护属性的信息,关于一典型缩略图图像(representativethumbnail image)是否为组成员缩略图(thumbnail)的信息,关于组描述符是否包含扩展数据的信息,等等。成员描述符ID是用于指定存储了组中成员记录的组成员描述符的信息,并通过其中在组成员信息块中的记录位置来表示。这是根据在整个CMF中包含组成员描述符的记录顺序通过2字节的序列号来表示。若给定该序列号,则可指定包括该组的信息块以及在信息块中所在的位置。一个组成员信息块最多可存储127个组成员的信息。例如,如果成员描述符ID为300,则该信息表示在第三个组成员信息块中的第四十六个组成员的信息。声明ID表示添加到组的声明,它用于组表的显示,查找组等,声明的内容在文本信息中。如在指定组成员描述符方法的情形中,根据文本的记录顺序由2字节序列号来表示声明ID,在没有声明的情形中则在声明ID中含有0×FFFF。
链接计数表示在子组的情形中自父组的引用链接。若链接计数为0,则子组不属于任何父组。若子组的链接计数大于1,则其具有自任一父组的引用链接,从而禁止在其上进行重写,即使在将其删除的情况下也会如此。即,在被删除子组所属组信息块[2,4]的空间位图[21,41]中将有关被删除子组的位置视为一使用的(used area)区域(“1”)。这消除了在即将删除子组的情形中需修改有关子组所属父组信息的必要。(原先,当删除属于一父组的子组时,应修改该父组信息,但由于必须查找属于该父组的子组的子组ID,因而这种修改将花费一些时间。)相反当删除父组时,对于包含在父组中的子组将各个链接计数减一。有鉴于此,如果一链接计数为0的子组已被删除,则在空间位图[21,41]中将有关子组信息的位置设置为空白区域(“0”),以允许在其上进行重写。在此实施例中,未从其他组引用父组,从而对于父组链接计数始终为0。
组名表示组的名称,除系统自动创建的组外,用户可自由为组命名。在系统组的情形,将日期(YYYY:MM:DD)记录在用于日期组的组名中,将目录编号和文件名(nnn:PLAYxxxx)记录在用于播放列表组的组名中。将组名按统一字符编码标准(与UDF文件系统的字符编码相同)进行表示,其中,首部一个字节用于字符编码的标识,其余区域填充0×00。创建/修改日期和时间表示创建/修改组信息的日期和时间,它被存储在12字节中,其格式与UDF的日期和时间信息的格式相同。缩略图成员ID(Thumbnail Member ID)指示具有在组表等显示中所用典型缩略图图像的典型成员。如果未设置缩略图成员ID(ID=0×FFFF),则将组成员描述符中的首部成员定义为典型成员。当组为子组时,缩略图成员ID指示一记录在文件描述符中的文件编号。当组为父组时,缩略图成员ID或指示一子组,或指示一文件。在组属性中写入关于指定谁的信息。在子组的情形中给定子组描述符的ID,而在文件的情形中给定文件描述符的ID。当父组的典型成员为一子组时,典型缩略图为典型子组的典型图像。成员总数为在属于该组的所有组成员描述符中所包含的成员总数。
扩展数据为用于存储除上述之外的组信息的结构,其结构如图15所示。在扩展数据中可存储许多数据元素,在首部一个字节中记录了所有数据元素的长度总和(数据长度)。图16显示出数据元素的结构。数据类型表示数据元素的类型,数据长度表示实际数据的长度,数据表示实际数据。图17显示出数据类型,它总共可存储256种数据类型,其中类型0到127表示系统数据,类型128到225表示用户数据。在系统数据中类型0到4被预先定义,下面将描述各个数据类型的实际数据内容。无效数据(类型0)用在扩展数据的尾部,用于填补扩展数据的剩余区域。若组类型为日期组时,则数据信息(类型1)存储创建日期和时间的记录,它与UDF时间戳具有相同的结构。当组类型为播放列表时,播放列表信息(类型2)存储播放列表文件ID,并以记录在文件信息中播放列表文件的文件描述符ID来表示。链接信息(类型3)表示到其他与该组相关联的对象描述符的链接信息,它可存储多个对象描述符。在此,每个对象描述符用一个字节的信息块类型(如图7所示)和两个字节的描述符ID来表示。下一个组信息(类型4),在存在有多个相同日期或播放列表组的情形中,用于表示下一个组描述符,它用两个字节的描述符ID来表示。为了记录用户专用信息预留了其余的用户数据(类型128到255),并在首部一个字节中记录供应商ID(如图6所示)。扩展数据的长度为24+64×n字节(n为0或更高)。若扩展数据从一个组描述符溢出(当n为1或更高时),则即刻将溢出的数据连续记录在下一个组描述符中。此时,仅存储扩展数据的组描述符将失去组ID。(图18显示出其中一示例。)由于在此实施例中各个组描述符的长度为64字节,因而在一个信息块中最多仅记录127个组。不过,通过将部分信息移到组成员描述符,可以增加在一个信息块中可存储组的最大数量。例如,如果将创建/修改日期和时间以及扩展数据移到组成员描述符,则组描述符的长度缩减到32KB,一个信息块能够存储255个组。此外,如果剩余8字节的信息,则一个信息块能够存储1008个组,从而可增加在内存中记录组的数量。如果将所有信息存储在组成员描述符中,则在组描述符中仅剩余组成员描述符ID(2字节),并且它用作指向组成员描述符位置的指针,组成员描述符存储了所有关于组的信息。
图19显示存储父组和子组成员信息记录的父组成员信息块[3]和子组成员信息块[5]。这两种信息块都具有相同的结构。该结构为一张记录了在8K字节信息块中以64字节为单位(单元)的父/子组成员描述符[34,54]的组成员信息的表。组成员信息[34,54]的集合为父/子组成员描述符[32,52]。父/子组成员描述符空间位图[31,51]表示在以64字节单位的各个单元中是否存储有效的组信息。在一个信息块中最多能存储127个组成员信息片[34,54],并且空间位图[31,51]使用16字节以一个位/单元的形式管理在各个单元中有效数据的有/无。即,在空间位图[31,51]中用值为“1”的一位表示在一单元中存储了有效的组成员信息,而用“0”表示在一单元中没有写入有效信息并允许在其上进行重写。预留区域[33,53]是从空间位图[31,51]所在64字节的单元中剩余出来的区域。如果父/子组成员描述符[34,54]的组成员信息数量为M,则有效数据的长度为64+64×M字节。在此实施例中,在整个CMF中对于父组成员和子组成员可记录成员描述符的最大数量各为16384。
由于组成员描述符[34,54]存储了组中包含的成员(子组或文件)的表,描述符的长度会根据所包含成员的数量而变化。因此,为了方便对组成员信息的编辑,将记录单位固定在64字节,在具有许多成员的情形中,将信息记录于多个组成员描述符中。在此实施例中,由于将组成员信息的块包含在单个组成员信息块中,因而连续使用组成员描述符[34,54]的最大数为127。在此实施例中,各父组仅包含子组,各子组仅包含文件,且用于多个文件(分组文件)管理的各个文件如播放列表,用于打印管理的DPOF等也将被视为子组。
图20显示了组成员描述符[34,54]的结构,父组成员描述符与子组成员描述符都具有相同的结构。组成员类型与组成员属性包含与组成员描述符所属组描述符具有相同的内容。下一个成员描述符ID表示当组成员从一个组成员描述符溢出时所用的下一个组成员描述符,它用组成员信息块中的记录位置来表示。这是根据包含在整个CMF中组成员描述符的记录顺序通过2字节的序列号来表示。若没有下一个成员描述符(在最后一个组成员描述符的情形中),则下一个组成员描述符ID含有0×FFFF。成员数量表示包含在该组成员描述符[34,54]中的成员数目,且成员ID包含一成员的表。一个组成员描述符(64字节)最多能存储二十九个成员。如果一集合组(collective group)包含许多成员,则将连接两个或更多的组成员描述符[34,54]来存储这些成员。若属于单个组的所有组成员描述符必须包含在单个组成员信息块[3,5]中,则在一个组中所包含成员最多为3683。成员ID的指定方法与下一个成员描述符ID的指定方法相同。根据在子组信息[4]中记录子组描述符[44]的顺序,用一编号(2字节)来指定子组ID,根据在文件信息[6]中记录文件描述符[64]的顺序,用一编号(2字节)来指定文件ID。
如果为减少组描述符的长度在组成员描述符中记录部分组信息,则将移走的信息存储在第一个组成员描述符中。即,第一个组成员描述符既包括从组描述符移走的信息,还包括最初记录在组成员描述符中的信息。这样不过,由于组成员描述符的长度为64字节,包含在组ID中的成员数量(N)会更小。如果成员的表从第一个组成员描述符溢出,则会将其余部分记录在一新组成员描述符中。第二个和随后的组成员描述符具有标准的结构(如图20所示)。
图21显示存储文件信息记录的文件信息[6]的结构。该结构为一张记录了在8K字节信息块中以16字节单位(单元)的文件描述符[64]的文件/目录信息的表,其中,文件描述符[64]的集合为文件描述符[62],文件描述符空间位图[61]表示以16字节单位的各个单元中是否存储有效的文件/目录信息。一个信息块最多能存储508个文件描述符[64],且空间位图[61]通过使用64字节以一个位/单元的形式管理在各个单元中有效数据的有/无。即,在空间位图[61]中用值为“1”的一位表示单元存储了有效的文件描述符,而用值为“0”的一位表示单元不包括任何有效的信息并允许对其重写。若文件描述符[64]的数量为F,则有效数据的长度为64+16×F字节。在整个CMF中最多能记录65534个文件/目录信息。
图22显示作为文件和目录信息的文件描述符[64]的结构。文件属性表示文件或目录的属性信息,它包括关于是文件还是目录的信息,关于是否为删除文件的信息,关于写保护属性的信息等,此外,在其中还包括关于辅助文件属性的信息如记录后的(after-recording)音频,用于传输的视频和用于说明的文本,以及包括关于文件描述符是否包含扩展数据的信息,等。文件类型表示如电影,静止图像,音频或播放列表的文件的类型,并表现为从文件类型表[12](如图5所示)表示的表中选出占一个字节的编号。这使得还可以指定该文件的扩展名。对于目录,文件类型表示无效(“0”)。链接计数为从子组到文件的引用链接的数量,0的链接计数表示该文件不属于任何子组。当文件的链接计数大于1时,从任一子组可引用该文件,从而即使要删除该文件时也会禁止对其重写。即,在该删除文件所属文件信息块[6]的空间位图[61]中将有关删除文件的位置视为使用的区域(“1”)。这消除了在删除文件时需修改有关文件所属子组信息的必要。(原先,若删除属于一子组的文件时,需修改子组信息,但由于必须查找属于该子组的文件的文件ID,因而这种修改将花费一些时间。)相反当删除子组时,将包含在子组中文件的链接计数各减一。有鉴于此,若一链接计数为0的文件被删除时,则会在空间位图[61]中将有关该文件信息的位置设置为空白区域(“0”),以便允许在其上进行重写。当文件描述符为目录信息时,则该链接计数为0。
父目录ID表示该父目录的一文件ID,它根据在文件信息[6]中记录文件描述符[64]目录信息的顺序指定一编号(2字节)。名称长度和名称分别表示文件或目录的长度和实际名称,名称用统一字符编码标准(unicode)(与UDP文件系统的字符编码相同)。名称区域的首部一个字节为字符编码标识,并在每字符8位的情形中它包含0×08,在每字符16位的情形中包含0×10。名称长度为还包括字符编码标识的字节长度,名称单元能使用最大长达255字节长度来存储无扩展名的名称。扩展数据与组信息(如图15,图16和图17)扩展数据的结构相同。由于名称和扩展数据都具有可变的长度,当文件描述符[64]的长度大于16字节(N+E不少于10字节)时,即刻将数据连续记录在下一个文件描述符中,并调整扩展数据的长度,以便使一个文件描述符的长度为16字节的整数倍。此时,在文件信息[6]的空间位图[61]中将用于文件名称和扩展数据的各个文件描述符区域设置为使用的区域(“1”),由该位置指定的文件ID为遗失(missing)文件ID。(图23显示其中一示例。)在此实施例中,以实数型字符串存储各个文件名,但还可用2字节的数字表示各个目录名或文件名,从而将文件描述符的长度减少到小于16字节的值。尤其是,在文件描述符中(图22),用2字节的值(名称ID)来代替名称长度和名称可将文件描述符的长度减小到8字节。如图26所示目录结构中,将该实施例配置成用三位数字的编号作为前三个字符来表示包含电影,静止图像,音频,播放列表等目录名称,而且包含相同类型文件的目录名称之间该编号彼此各不重复。由此,通过用文件类型指定文件的类型以及指定目录编号作为目录名可唯一确定一目录。至于文件名,如对于目录名的情形,在一个目录中相同类型文件之间在文件名中包含的四位数字编号彼此不重复。即,由于通过文件类型给定一扩展名,因而通过指定文件名的文件编号可唯一确定一文件。在该配置中,包含在一个信息块中文件描述符的数量为1008,因而在内存中能存储更多文件的信息。
图24显示存储用于组声明以及供应商专用声明的文本信息记录的文本信息[7]的结构。该结构为一张记录了在8K字节信息块中以128字节为单位(单元)的文本描述符[74]的文本信息的表,其中,文本信息[74]的集合为文本描述符[72],而且文本描述符空间位图[71]表示在128字节单位的各个单元中是否存储有效的文本信息。在一信息块中最多能存储63个文本信息[74],并且空间位图[71]使用8字节以一个位/单元的形式管理在各个单元中有效数据的有/无。即,在空间位图[71]中用值为“1”的一位表示在一单元中存储了有效的文本信息,而用值为“0”的一位表示在一单元中没有写入有效信息。预留区域[73]从空间位图[71]所在128字节的单元中剩余出来的区域。若文本描述符[74]的文本信息数为T,则有效数据的长度为128+128×T字节。
管理信息[1]最多能存储1664个信息块描述符,其中各父组信息[2],父组成员信息[3],子组信息[4],子组成员信息[5]和文件信息[6]最多使用130个块。由于对于父组和子组的声明必须获得文本信息[7]的521个块,总共可允许用户自由使用文本信息[7]和供应商专用信息[8]的493个块。
图25显示作为文本信息的文本描述符[64]的结构。文本属性为文本的属性信息,它包括关于该文本是否为删除的信息,关于写保护属性的信息,等等。对象类型包括引用文本描述符的信息(对象)类型,并以块类型表[14](图7)的类型值来表示。根据在对象信息(组信息等)中记录对象描述符(组描述符等)的顺序,对象ID指定一2字节的编号。对象类型和对象ID激活反指向引用文本信息(组等)的引用。文本长度包括字符串长度的记录,在该区域实数型字符串通过UTF-8或UTF-16(与文件系统的字符编码相同)来记录。文本区域首部一个字节为字符编码标识,在UTF-8的情形中它包含0×08,或在UTF-16的情形中它包含0×10。文本长度为还包括字符编码标识符的一字节长度,且文本区域最多能存储123字节的数据。
2.使用CMF的操作程序下面将参照图43描述使用CMF文件管理的程序。图43显示从启动应用程序或插入盘的时刻到终止应用程序或弹出盘的时刻之间的处理。CMF的总长是可变的,但在8K字节单位的信息块中包含所有的信息,管理信息块是基于在CMF首部16字节的管理信息来管理。因此,通过读取管理信息可了解CMF的全部结构。由此,在启动应用程序或插入盘时首先从盘上读取管理信息。之后,应用程序在必要时基于盘上的管理信息读取必要的信息块。不过,系统还可配置成在读取管理信息的同时还首先读取盘初始化时所配置的48K字节的组信息,组成员信息,文件信息和文本信息。
在下一步显示组或文件的列表步骤中,应用程序基于管理信息提供所需的显示以便于阅读。显示形式依赖于在应用程序侧的设置,下面将进行详细描述。当修改盘上的内容时,或对组信息提供另外的信息或对其进行编辑时,则会编辑CMF的内容。此时分组方法包括两类分组,根据用户指令进行的分组和由系统根据日期等自动执行的分组。在任一情形中,当在内存中缺少必要信息时,必须通过使用管理信息中的信息块表执行从盘上读取信息的操作。在完成相继的处理之后当断电或弹出盘时,若已修改了CMF文件的内容,则更新CMF,然后将更新后的CMF写回到盘中。将CMF写回到盘中的计时可设在除中断程序之外的时间。
3.使用CMF信息显示的示例下面将描述一通过使用CMF引用组和文件程序的示例。图54显示CMF总体结构的示例。首先,信息块描述符[17]分别指向包含在CMF[B2到B8]的信息块,并管理位置,类型,内容等信息。父组描述符[24]指向作为在其自身组[G2]中包含成员的表的父组成员描述符[34],父组成员描述符[34]指向作为在其自身组[G3]中包含成员的表的子组成员描述符[44]。子组描述符[44]指向作为在其自身组[G4]中包含成员的表的子组成员描述符[54],子组成员描述符[54]指向作为该组[G5]中成员的文件描述符[64]。在本例中没有反方向指示的信息,各父组仅包含子组,且各子组仅包含文件。该文本描述符[74]被父组描述符[24],子组描述符[44]和供应商专用信息块[8][T2,T4,T8]所引用,并还以两种方式将其链接,这是因为文本描述符[74]自身具有对描述符信息的引用。在CMF尾部的虚拟信息块[9]为8KB的虚拟块,附加虚拟块是为了使CMF的长度等于ECC块的整数倍(如32KB)。这是出于防止将其他数据记录在包含CMF的ECC块中,且一旦在CMF尾部添加信息块时,虚拟信息块将被信息块所代替。当每个信息块的首部设置在ECC块的首部时,将会阻止将各信息块记录在许多ECC块上,并可高效地实现信息块的修改和添加。
例如,为显示组列表,如图55所示,应用程序首先检查在管理信息中预读取的信息块描述符[17],抽取其块类型为组信息的信息块描述符[17]。由于信息块描述符[17]的记录顺序直接体现出有关块的记录位置[2,3,4,5,6,7,…],应用程序将它们的记录顺序转换为地址并访问相关的组信息[2,4]。然后应用程序从包含在组信息[2,4]中的组描述符[24,44]中抽取名称,声明等,并在显示器上显示必要的项目。不过,声明被记录在文本信息块[7]中且组描述符[24,44]仅包含指示该声明的文本ID。由此,应用程序需要引用信息块描述符[17]并访问对象文本ID的文本信息块[7]以读取文本描述符[74]。由于文本描述符[74]包含反指向引用其自身组描述符[24,44]的引用信息,因而通过使用反向引用信息来检索包含该声明的组信息,易于查找该声明。
下面将参照图56和图57描述其他显示形式。在图55中,在显示器[100]上列出了窗口的标题[101]和父组的声明[104],通过一滚动条[102]显现显示区域。当选中框[103]中的父组时,显示属于所指定父组的子组列表,如图56所示。这使得应用程序从与选中父组有关的父组成员描述符[34]中获得所包含子组的组ID,基于该组ID访问子组描述符[44],并显示属于所选父组的子组列表。此时,由于在子组描述符[44]中没有包含典型图像和声明的实体,应用程序需要基于缩略图ID和声明ID访问对象文件描述符[64]和文本描述符[74],并读取这些实体。在显示期间,当发现删除一子组时,子组的链接计数减一。若链接计数为0时,在子组所属信息块的空间位图中将相应部分的值改为“0”(可重写),在信息块描述符中将对象数量减一,且若有必要还减小数据长度。
在图56的显示示例中,在显示器上[100]显示窗口的标题[101],子组的典型图像[106]和声明[105]。通过滚动条[102]可显现显示区域。子组的缩略图为通过缩略图ID所指示的典型文件的缩略图,且对于没有指定典型文件的子组,将子组的典型成员定义为包含在子组的文件列表中首部的文件。所选中的子组由框[103]框起。当决定在这种状态时,显示属于所指定子组的文件列表,或相继地再现文件。一旦相继地再现这些文件时,将跳过具有辅助属性的文件而不会被再现。如果子组为播放列表组,则会再现播放列表。在文件列表显示期间或相继再现期间,当发现删除的文件时,将链接计数减一。如果链接计数为0时,则在文件所属信息块的空间位图中将相应部分的值改为“0”(可重写),在信息块描述符中将对象数量减一,且若有必要则还会减小数据长度。
图57显示属于所选子组的文件列表的显示示例。根据与上述相似的程序获得显示所需的信息,在此例中仅显示缩略图图像。在显示器[100]上显示有窗口的标题[101]和文件的缩略图图像[107],通过滚动条[102]可显现显示区域。所选中的子组由框[103]框起。当决定在这种状态时,再现该文件。如果文件为静止图像,则显示该静止图像。如果文件为电影,则启动电影的再现。在列表中不必总显示出具有辅助属性的文件。
以上描述了三种类型的显示示例,不过应该指明,父组,子组和文件的显示方法并不限于上述的显示示例,例如,父组的显示还可同时包含典型子组的缩略图和声明的显示,或仅使用声明用于文件列表显示。
4.CMF的更新程序下面将描述CMF更新内容的程序。首先,将根据各个情况描述由于更新而导致在CMF中数据结构的变化。
图27显示在盘初始化时的目录结构,图28显示在该时刻CMF的结构。在初始化状态,仅有ROOT[80],MISC[81],DCIM[82]和VIDEO[83]的目录,且不存在任何文件。CMF由一个16K字节的管理信息和六个各为8KB的信息块组成,它包括四个目录信息片和两个组信息片。由于将此实施例设置成具有缺省日期组和播放列表组,首先各创建两个它们的父组,即父组描述符[22]和相应的父组成员描述符[32]。此时父组成员描述符[32]没有任何成员。由于具有四个目录,则创建四个目录信息的文件描述符[62]。在这些信息块的空间位图中,在与具有数据表项(entry)的对象描述符的位置相对应的位中设置“1”。在子组信息[42,52]中和在文本信息[72]中没有数据。信息块表[16]包含除管理信息[1]外的有关六个块的信息。由于在空间位图区域中包含各个信息块中的预留区域,因而未将它们显示。
图29显示初始化后即刻记录仅一个电影文件(TAKE0001.MPG)[93]的目录结构。在VIDEO目录[83]下自动创建一电影目录(100MOVIE)[85],并在该电影目录下记录该电影文件。图30显示此时的CMF结构。若与图28相比较,则看出将一目录信息片和一文件信息片都添加到在文件信息[6]中的文件描述符[62]上。当添加文件时,则在日期组中自动将其注册,以便自动创建各一个日期子组的子组描述符[42]和作为其中成员的子组成员描述符[52]。将创建的新文件作为日期子组成员描述符[52]的一成员注册,还将此刻创建的日期子组描述符[42]作为日期父组成员描述符[32]的一成员注册。此时,在添加有描述符的信息块的空间位图中,将对应于记录位置的位由“0”改为“1”,同时还更新在信息块表[16]中的信息。
图31显示在具有两个电影目录[85]和六十个电影文件[93]的记录状态中,其中添加一新播放列表文件(PLAY0001.XML)[95]的目录结构。由于在此例中将六十个文件分别记录在两个目录下,因而产生两个电影目录[85]。当创建一新的播放列表文件[95]时,在VIDEO目录[83]下自动创建一播放列表目录(300PLIST)[87],并将该播放列表文件记录在该播放列表目录下。图32显示此刻的CMF结构,其中,由于各增加目录和文件使计数总共达到68,则文件描述符[62]的数量为68。如果再加一播放列表文件,则会在播放列表组中自动将其注册,并导致自动各产生一个播放列表子组的子组描述符[42]和在其中成员的子组成员描述符[52]。将新的播放列表文件注册为播放列表子组成员描述符[52]的一成员,还将此刻所创建的播放列表子组描述符[42]注册为播放列表组的播放列表父组成员描述符的一成员[32]。此时,在添加有描述符的信息块的空间位图中,将对应于记录位置的位由“0”改为“1”,同时还更新在信息块表[16]中的信息。
图33显示的CMF结构与图32所示状态相比,其中添加一具有包括三十或更多文件声明的子组。当进行除如播放列表文件等分组文件之外的分组时,不会创建任何实际的文件,该目录结构如图31所示。由于具有30或更多文件(少于59个文件)的一子组必须需要两个子组成员描述符[52],因而在子组成员描述符[52]中将子组成员数量加二,且增加具有指向其的引用链接的一个子组描述符[42]。对于一个组仅添加一个组描述符[42],独立于一个块组所使用的组成员描述符[52]的数量。由于声明记录在文本信息[7]中,因而添加一个文本描述符[72]。出于对上述三部分的改动,在相应信息块的空间位图[41,51,71]中和信息块表[16]中更新信息。
图34显示的CMF结构与图33所示状态相比,其中将一成员添加到一子组,并创建一新子组成员描述符[52]。为了对组添加一成员,若可能则将该成员能放置在现存组成员描述符的空间中。然而,若没有空白空间则必须创建一新组成员描述符。在此例中添加一个子组成员描述符[52]。与此同时,还必须更新新子组成员描述符[52]前面的子组成员描述符[52]的下一个成员描述符ID。与此同时,在相应信息块的空间位图[51]中和在信息块表[16]中更新信息。
图35显示的CMF结构与图34的状态相比,其中,仅添加一个具有一声明的父组。在此情形中目录结构与图31的状态相比并无什么变化。由于新添加的父组仅包含29或更少的子组,因而添加一个父组描述符[22]和一个父组成员描述符[32]。既然将声明记录在文本信息[7]中,则添加一个文本描述符[72]。出于上述三部分的改动,在相应信息块的空间位图[21,31,71]中和信息块表[16]中更新信息。
图36显示在初始化时确保填充全部CMF容量的数据数量,其中包括父组数量,父组成员数量,子组数量和子组成员数量都为127,文件数量为508,文本数量为63。实际中,组的数量从未超过组成员的数量。
图37显示向初始化时获得CMF满状态(full state)的结构添加一文件的CMF结构。首先,假设CMF的满状态为在其中父组数量和子组数量各为127,文件数量为508,以及文本数量为63。此例中显示每个组描述符仅存在一个组成员描述符。当在这种状态添加一个文件信息时,在现存的文件信息块1[61,62]中没有空白区域,从而必须在CMF的尾部添加一新的文件信息块2[65,66]。之后,在新添加的文件信息块2[65,66]中记录一文件描述符2[66]。同时,在日期组中自动注册新文件,从而将其注册为相应日期子组成员描述符[52]的一成员。与此同时,在相应空间位图2[65]中更新信息,并在信息块表[16]中将块的数量加一。
图38显示关于图37所示的状态,其中将一文件添加到子组,并添加一新子组成员信息块的CMF结构。为了向组添加一成员,若可能则可将其放置在现存组成员描述符的空间中。然而,如果没有空白空间则必须创建一新组成员描述符。此外,在此例中,在现存子组成员信息块1[51,52]中没有空白区域。因此,将一新子组成员信息块2[55,56]添加到CMF的尾部,并创建一子组成员描述符2[56]。同时,还必须更新在新子组成员描述符2[56]前面的子组成员描述符1[52]的下一个成员描述符ID。与此同时,在相应空间位图2[55]中更新信息,并在信息块表[16]中将块的数量加一。
图39显示其中继续在图38中添加一具有一声明的子组的CMF结构。既然现存信息块为满,则添加一新的子组信息块和文本信息块。首先,将用于新子组的一子组信息块2[45,46]添加到CMF,并将新子组的成员添加到子组成员描述符2[56]。此外,为了存储具有来自子组的引用链接的声明,将一文本信息块2[75,76]添加到CMF,并将一个文本信息添加到文本描述符2[76]。与此同时,在相应空间位图[45,55,75]中更新信息,并在信息块表[16]中将块的数量加2。
图40又显示的CMF的结构,与图38相比,其中向现有子组添加一文件,且其中,包含子组以接收所加文件的信息块1[51,52]已充满数据,从而将所有有关组成员信息移到另一信息块2[55,56]。假设在添加文件之前仅有一个子组成员描述符,并且对其添加一个新子组成员描述符。为了将所有组放置在一个信息块中,首先将初始子组成员描述符1[52]从子组成员描述符1[52]移到子组成员描述符2[56],并对其添加一新子组成员描述符2[56]。从而,在新子组成员描述符2[56]中将子组的数量加二,并在初始子组成员描述符1[52]中将子组数量减一。此外,还必须将具有指向子组成员描述符的引用链接的子组描述符1[42]的组成员描述符ID的值进行更新。最后,还在相应空间位图[51,55]中和在信息块表[16]中更新信息。
下面将描述删除一文件或组的情形,图41显示删除在文件描述符1[62]中一文件以及将删除属性添加到删除的文件描述符的情形。此时,根据删除文件的链接计数值来确定是否将在空间位图1[61]中有关部分的值改为“0”(删除)。如果链接计数的值为0,则可将空间位图1[61]中的值改为“0”。如果链接计数大于1,则文件具有从任一子组的引用链接,从而将在空间位图1[61]中的值保持为“1”以禁止重写。如果在空间位图1[61]中的值发生改变,则在信息块表[16]中还要更新信息。
图42显示删除一个子组描述符的情形中CMF的结构,其中,该子组描述符表示一声明有两个子组成员描述符作为成员信息的子组的信息。首先,将删除属性添加到子组描述符1[42]中删除的组描述符。此时,根据删除组的链接计数的值来确定是否将在空间位图1[41]中有关部分的值改为“0”(删除)。如果链接计数的值为0,则可将空间位图1[41]中的值改为“0”。如果链接计数大于1,则该组具有从任一父组的引用链接,从而将在空间位图1[41]中的值保持为“1”以禁止重写。由于父组的链接计数始终为0,当删除父组时可将在空间位图中有关部分的值设置为“0”(删除)。下一步删除表示删除子组的成员信息的两个子组成员描述符1[52]。这是通过在相应于删除成员描述符位置信息的空间位图1[51]中将有关位置的值设置为“0”(删除)来实现。随后,从具有自删除组的引用链接的文本描述符1[72]删除文本信息。这还可通过在相应于删除文本的空间位图1[71]中将有关位置的值设置为“0”(删除)来实现。当上述三个修改的信息块的空间位图[41,51,71]中值发生变化时,在信息块表[16]中还更新信息。
图44显示添加一新信息块的程序。当对于对象描述符的其他信息没有可用空白空间时,添加一新的信息块。第一步为获得在CMF末端8KB的区域。如果有要添加的新描述符等信息,则从空间位图和预留区域后面描述符记录区域的首部记录必要的信息,并将在空间位图中对应于记录位置的部分设置值为“1”。之后,将一新信息块描述符添加到管理信息中的信息块表,并在其中记录必要的项目。当改动信息块表时,在普通信息中更新有关的项目,如对象数量等。
图45显示添加其描述符长度为固定长度的新的组,文件,或文本信息(对象)的程序。由于这些信息具有固定长度的记录尺寸,因而只要有哪怕仅一个空白空间也能将其记录下来。首先,确定在现有信息块中是否有空闲空间。如果在有关对象的信息块中对象数小于最多可记录的数量,则有空闲空间。如果在现有信息块中有空闲空间,则可在其中记录有关对象。如果没有空白空间,则创建一新信息块,并在其中记录有关对象。在现有信息块中的记录期间,如果由对象数量所计算出来的数据长度(空间位图区域的长度+预留区域的长度+对象数量×单元长度)等于数据长度的值时,则在直到数据长度的区域中没有空白空间,从而可从仅在数据长度之后的位置记录新对象的信息。如果数据长度的值大于由对象数量所计算出来的数据长度,在中间存在空白区域,从而通过使用空间位图来查找该空白区域,并在其中记录新对象的信息。如果在数据长度之后存在足够区域,即便在中间有空白空间,也会从仅在数据长度之后的位置开始记录新对象的信息,而不会查找空间位图。完成记录之后,在相同信息块的空间位图中将有关部分的值设置为“1”,并将在信息块描述符中的对象数量加一,若有必要还增加数据长度。仅将新创建的对象添加到有效数据长度的尾部时,将增加数据长度。当将新对象记录在中间的删除区域时,不增加数据长度。
图46显示添加其描述符长度为可变长度的新组成员信息(对象)的程序。由于信息具有可变长度的记录长度,因而必须确定是否有足够的空白区域。为了首先确定在现有信息块中是否有足够的空白区域,将最大可记录数量和在对于有关对象的信息块中的对象数量之间的差值与记录长度相比较。如果现有信息块具有足够的空间,则在其中记录该对象。如果没有足够的空间,则创建一新的信息块并在其中记录有关对象。当在现有信息块中进行记录时,如果由对象数量所计算出来的数据长度(空间位图区域的长度+预留区域的长度+对象数量×单元长度)等于数据长度的值时,在直到数据长度的区域没有空白空间,从而可从仅在数据长度之后的位置记录新的对象信息。如果数据长度的值大于由对象数量所计算出来的数据长度,在中间存在空白区域,通过使用空间位图来查找该空白区域,并在其中记录新对象的信息。如果在数据长度之后存在足够区域,即便在中间有空白空间,也会从仅在数据长度之后的位置开始记录新对象的信息,而不会查找空间位图。完成记录之后,在相同信息块的空间位图中将有关部分的值设置为“1”,并将在信息块描述符中的对象数量加上所添加对象的数量,若有必要还增加数据长度。仅将新创建的对象添加到有效数据长度的尾部时,将增加数据长度。当将新对象记录在中间的删除区域时,不增加数据长度。当添加组成员信息时,必须将具有到所加组成员的组成员描述符的引用链接的组描述符的组成员ID,或将仅在所加组成员描述符之前的组成员描述符的下一个成员ID,修改为新的成员描述符ID。
下面将描述删除一对象的程序。图47显示删除文件信息的程序。首先,将删除属性添加到该文件描述符中的文件属性。当链接计数为0时,在相同信息块的空间位图中在删除部分将值设置为“0”,将在信息块描述符中的对象数量减一,若有必要还将减少数据长度。当链接计数不为0时,为了避免重写,在空间位图中以及在相关信息块描述符中不发生任何改变。此时,仅当删除对象位于有效数据长度的末端时,减少数据长度。当删除中间区域时,则不减少数据长度。
图48显示删除文本信息的流程。当删除的对象为一文本时,必须将该文本与具有到其上引用链接的组区分开。因此,将这些组的声明ID值设置为0×FFFF,以表明没有声明。之后,在相同信息块的空间位图中在删除部分将值设置为“0”,将在信息块描述符中的对象数量减一,若有必要还将减少数据长度。此时,仅当删除对象位于有效数据长度的末端时,减少数据长度。当删除中间区域时,则不减少数据长度。
图49显示删除子组信息的流程。首先,将删除属性添加到将删除子组的组描述符。此时,由于在链接计数为0的情形可重写删除的部分,因而在空间位图中删除部分将值设置为“0”。将在信息块描述符中的对象数量减一,若有必要还减少数据的长度。如果该组具有一声明,则删除在文本信息中相应的文本。之后,根据组成员ID,删除在子组中所有的组成员描述符。最后,将包含在子组中所有文件的链接计数各减一。此时,如果删除一文件且其链接计数为0,则将在该文件所属信息块的空间位图中有关部分将值设置为“0”,以禁止重写,并将在信息块描述符中的对象数量减一,若有必要还减少数据长度。仅当删除对象在有效数据长度的末端时,减少数据长度。当删除中间区域时,则不减少数据长度。
图50显示删除父组信息的流程。由于父组始终具有值为0的链接计数,因而可将其中的组描述符彻底删除。在空间位图的删除部分将值设置为“0”,将在信息块描述符中的对象数量减一,若有必要还减少数据长度。此时,彻底删除了组描述符,从而没有必要添加删除属性,这与删除子组的情形不同。如果该父组具有一声明,则删除在文本信息中相应的文本。之后,根据组成员ID,删除在父组中包含的所有组成员描述符。最后,将包含在父组中所有子组的链接计数各减一。此时,如果删除一子组且其链接计数为0,则在该子组所属信息块的空间位图中将有关部分的值设置为“0”,以禁止重写,并将在信息块描述符中的对象数量减一,若有必要还减少数据长度。仅当删除对象在有效数据长度的末端时,减少数据长度。当删除中间区域时,则不减少数据长度。
图51显示移动组成员信息(对象)的流程。由于该信息具有可变长度的记录长度,因而必须确定是否有足够的空白区域。为了先确定现有信息块是否具有足够的空间,则将记录长度和最多可记录数量与在用于有关对象的信息块中的对象数量之差进行比较。如果现有信息块具有足够的空间,则可将对象移到那里。如果没有足够的空间,则创建一新的信息块并将有关对象移到那里。在将对象移到现有信息块的情形中,如果由对象数量所计算出来的数据长度(空间位图区域的长度+预留区域的长度+对象数量×单元长度)等于数据长度时,在直到数据长度的区域中没有空白空间,则仅从在数据长度之后的位置记录将要移动的对象信息。如果数据长度的值大于由对象数量所计算出来的数据长度,在中间存在空白区域,通过使用空间位图来查找该空白区域,并在其中记录所要移动的对象信息。如果在数据长度之后存在足够区域,即便在中间有空白空间,也会从仅在数据长度之后的位置开始记录,而不会查找空间位图。完成移动之后,在移入对象的信息块的空间位图中有关部分将值设置为“1”,将在信息块描述符中的对象数量加一,若有必要还增加数据长度。将移动组成员所属组描述符的成员ID的值,或将前一个组成员描述符的下一个成员ID的值,重写入一新的成员描述符ID。最后,将以前的(old)组成员信息块的空间位图中有关部分的值设置为“0”,将在信息块描述符中的对象数量减一,若有必要还减少数据长度。
下面将描述加入/删除一包含在父组或子组中的成员(对象,如子组,文件等)的流程。图52显示向组中添加一成员的流程。如果在所需组的组成员描述符中有足够的空白区域添加一成员,则将对象ID简单地添加到对象的组成员描述符中。将成员总数的信息进行更新,之后将各个所加对象的链接计数加一。如果没有足够的空白区域,则在相同组成员信息块中添加必要数量的组成员描述符。此时,如果在含有要添加对象的组成员描述符的组成员信息块中,该空白区域不足以添加组成员描述符,则可将属于一个组的所有组成员描述符移到另一个组成员信息块中。如果在现有组成员信息块中没有空白区域,则创建一新的组成员信息块。
图53显示删除包含在一父组或一子组中的成员(对象,如子组,文件等)的流程。首先从该组成员描述符中删除所要删除的成员,更新成员总数的信息,之后将删除对象的链接计数各减一。此时,如果删除了一对象,或其中的链接计数为0,则在对象所属的信息块的空间位图中将有关部分的值设置为“0”,将在信息块描述符中的对象数量减一,如果有必要还减少数据长度。此外,当从组中删除成员使得组成员描述符中不含任何成员时,将修改遍及整个组的下一个成员描述符ID,并删除不必要的组成员描述符。
工业应用如上所述,提供作为一文件用于彻底管理所有必要文件和组的CMF(内容管理文件),使得应用程序无需使用文件系统而通过CMF来处理大量文件,并实现必要的处理如分组等,且兼具通用性。例如,在大量文件关于时间序列的显示情形中,将根据日期顺序对文件进行分组,或在CMF中以时间序列记录文件信息,并按顺序再现这些文件。以父组层和子组层的组信息分层结构还方便了组的管理。
由于CMF具有一列包含在各个组中的成员(对象,如子组,文件等),且各对象具有作为对象所属组编号的链接计数,可实现快速检索包含在某一组中的成员列表,并易于确定某一对象是否包含在任一组中。这便于当删除包含在任一组中的对象时发出警告等。
当通过使用CMF中的表用一个字节表示扩展名时,可减少用于文件名的信息长度。此外,将扩展名表配置成甚至对于相同扩展名可根据其类型将其视为不同的扩展名来处理,从而可独立于扩展名对文件类型进行分类。当文件本身还提供附加文件属性时,能够对其区分出普通视频,音频等。
尽管组成员信息依据所包含的成员数量具有可变长度,但它通过使用固定长度(64字节)的连接区域(单元),易于高效地实现添加,删除等处理。由于将组信息和成员信息以各自的形式记录在固定长度(8KB)的区域(块)上,而且在同一块中记录属于同一组的连续成员信息,提高了读取效率。此外,又在另一块中记录组的声明,当记录不具有声明等的组时可提高存储效率。
在各个块中的空白区域由该块中的空间位图来管理,且在各个块中空白区域的数量和数据长度通过在CMF首部的管理块来管理,从而易于减少驻留在内存中的数据长度,并减少搜索量。此外,通过其中记录位置的顺序来指定一文件或组,消除了在文件信息或组信息中需要拥有其各自ID编号的必要,减小了长度,并消除了需要在指定文件信息或组信息中查找的过程。

当前第1页 第1页 第2页 第3页