一种合并文件的方法

文档序号:6446191阅读:190来源:国知局
专利名称:一种合并文件的方法
技术领域
本发明涉及计算机和通信领域的文件系统技术,尤其涉及一种在文件系统中合并文件的方法。
背景技术
在计算机的实际应用中,经常需要按照一定顺序对多个文件进行合并。如,当通过多媒体硬件向文件系统写入数据时,一般包括视频和音频的数据,而通常的视频和音频播放文件的标准(如AVI),需要将音频和视频数据合并成一个逻辑文件。
目前文件合并方法是首先读取源数据,然后再写入目标数据,最后删除源数据。如图1、图2所示,将图1中的四个源文件A、B、C、D合并为图2中的目标文件A1的过程。源文件A、B、C、D占用簇10到簇29,合并时分别将这些文件复制到另一存储区间,合并后目标文件A1占用簇40到59。
在一般应用环境下对大的文件进行合并时往往受到剩余空间的限制。例如,需要备份硬盘上的文件时,一般需要把他们打成包(ZIP,TAR,RAR等格式),如果磁盘空间不够,这些操作将不能执行。磁盘空间的余量与操作合并的数据量很多时候是成比例的。例如磁盘总容量有10GB及已有数据6GB;此时需要对6GB的数据进行备份等操作,合并成为一个文件,由于剩余空间只有4GB,该操作将无法被执行。
从上可知,现有的文件合并方法存在以下缺点1、由于需要进行读取数据、写入数据和删除数据操作,因此,不仅合并效率低和占用的系统资源多,而且还会导致过多的数据碎片。
2、如果剩余空间不足(小于源文件的数据大小),无法进行文件合并操作,因此,受到存储空间的限制。

发明内容
有鉴于此,本发明提供一种合并文件的方法,以解决采用现有技术合并文件时存在占用大量系统资源和受到存储空间限制的问题。
为解决上述问题,本发明提供如下技术方案一种合并文件的方法,用于将存储器上的多个文件按顺序合并成一个文件,该方法包括如下步骤A、确定需要合并的源文件和各源文件的合并顺序;B、创建一个新文件作为合并后的目标文件,并将所述合并顺序中的第一个源文件在存储器中的起始位置作为该目标文件的起始位置,和将所有源文件的总长度作为该目标文件的长度记录在该目标文件的文件描述表中;C、修改文件系统中描述文件存储位置的链表,使所述合并顺序中前一个源文件的最后存储位置指向后一个源文件的起始存储位置;D、在文件系统中删除所有源文件的文件描述表。
所述步骤C包括如下步骤C1、将所述合并顺序中的第一个源文件作为当前源文件;C2、在描述文件存储位置的链表中查找描述当前源文件的最后存储位置的表项,和根据合并顺序获取当前源文件的后一源文件的起始存储位置;C3、修改描述当前源文件的最后存储位置的表项,使该表项中的下一存储位置指向所述后一源文件的起始存储位置;C4、确定所述后一源文件在所述合并顺序中是否为最后的源文件,如果是则结束修改,否则,将该后一源文件作为当前源文件并转步骤C2。
由于采用本发明合并文件主要对文件描述表和描述文件存储位置的链表进行修改,不需要复制数据(读和写数据)和清除原数据,因此,不仅占用系统资源少,而且合并效率高,几乎不产生数据碎片;在合并文件过程中仅需极少的存储空间,对剩余空间较少的存储器也可进行文件合并操作。


图1为现有技术中四个文件的文件分配表示意图;图2为现有技术中合并文件的示意图;图3、图4为本发明合并文件的流程图;图5为本发明对图1中所示文件进行合并后的示意图。
具体实施例方式
本实施例主要以文件分配表(File Allocation Table,FAT)文件系统对本发明进行说明。在本发明中需要合并的文件称为源文件,合并后的文件称为目标文件。
计算机系统中的文件系统主要完成三项功能跟踪记录存储器上中被耗用的空间和自由空间,维护目录名和文件名,跟踪记录每一个文件的物理存储位置。FAT文件系统采用文件描述表(FDT)来记录文件的属性信息,如存储文件的起始位置、文件长度(大小)等;通过FAT表来记录文件的物理存储位置,FAT表是在FAT文件系统中用于磁盘数据(文件)索引和定位的一种链式表,表中记录存储各文件的簇号。簇(Cluster)是将某一线形范围的物理位置(地址)形成一个管理单位,如磁盘的最小单位是一个扇区,一个簇可以根据需要包含两个、四个甚至更多的扇区。
本发明在合并文件时,通过修改目标文件的文件描述表(FDT)和修改FAT表来达到合并文件的目的。参阅图3,以合并图1中所示源文件A、B、C、D为例,其主要过程如下步骤1、确定需要合并的各个源文件的名称(包含路径信息)和合并的排列顺序。如输入源文件名A、B、C、D,合并时的排列顺序第一为源文件A,第二为源文件B,第三为源文件C,第四为源文件D。
步骤2、在文件系统中创建一个新文件作为合并后的目标文件E。如果目标文件的名称为源文件中的某个文件名,则应当使其路径不同。
步骤3、所有源文件的总长度和排列顺序中第一源文件的起始存储位置。
通过查询源文件A、B、C、D的文件描述表获取各源文件的长度,然后计算出总长度,同时,从源文件A的文件描述表中得到起始存储位置的簇号(如图中的簇0)。
步骤4、修改目标文件E的文件描述表中的起始位置和文件长度,将步骤3中的计算出的文件总长度作为目标文件E的长度,将源文件的起始位置簇号10作目标文件E的起始存储位置。
步骤5、修改FAT表,使排列顺序中前一个源文件的最后存储位置指向后一个源文件的起始存储位置。即将源文件A存储的最后簇14的下一簇的指针指向源文件B的起始簇15;将源文件B存储的最后簇19的下一簇的指针指向源文件C的起始簇20;将源文件C存储的最后簇24的下一簇的指针指向源文件D的起始簇25;源文件D存储的最后簇不修改(该最后簇的下一簇指针指向为结束标志)。
步骤6、在文件系统中删除源文件A、B、C、D的文件描述表。
参阅图4所示,步骤5包括以下步骤步骤51、将排列顺序中的第一个源文件作为当前源文件。
步骤52、在FAT表中查找到存储当前源文件的最后簇,根据排列顺序获取当前源文件的后一源文件的起始存储的簇。
步骤53、将前源文件存储的最后簇的下一簇指针指向后一源文件的起始存储的簇。
步骤54、判断所述后一源文件在排列顺序中是否为最后的源文件,如果是则结束,否则,将该后一源文件作为当前源文件并转步骤52。
步骤55、结束修改FAT表。
通过4次执行步骤52到54后,即得到上述步骤5中的结果。
参阅图5所示,本发明对图1所示的四个文件合并后的目标文件在存储器中的物理存储位置并未改变,而只是文件描述表和FAT表产生了变化,即原有的四个源文件A、B、C、D的文件描述表被删除,四个源文件的存储位置按顺序链接。
从上可知不需要复制数据(读和写数据)和清除原数据,因此,不仅占用系统资源少,而且合并效率高,几乎不产生数据碎片;在合并文件过程中仅需极少的存储空间,对剩余空间较少的存储器也可进行文件合并操作虽然本实施例以FAT文件系统进行了说明,但并不仅限于此,本发明同样适用于NTFS文件系统(用于Windows2000/Windows XP等操作系统)。上述的存储器包括但不限于软盘、硬盘和闪存等。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种合并文件的方法,用于将存储器上的多个文件按顺序合并成一个文件;其特征在于包括如下步骤A、确定需要合并的源文件和各源文件的合并顺序;B、创建一个新文件作为合并后的目标文件,并将所述合并顺序中的第一个源文件在存储器中的起始位置作为该目标文件的起始位置,和将所有源文件的总长度作为该目标文件的长度记录在该目标文件的文件描述表中;C、修改文件系统中描述文件存储位置的链表,使所述合并顺序中前一个源文件的最后存储位置指向后一个源文件的起始存储位置;D、在文件系统中删除所有源文件的文件描述表。
2.如权利要求1所述的方法,其特征在于,步骤C包括如下步骤C1、将所述合并顺序中的第一个源文件作为当前源文件;C2、在描述文件存储位置的链表中查找描述当前源文件的最后存储位置的表项,和根据合并顺序获取当前源文件的后一源文件的起始存储位置;C3、修改描述当前源文件的最后存储位置的表项,使该表项中的下一存储位置指向所述后一源文件的起始存储位置;C4、确定所述源文件在所述合并顺序中是否为最后的源文件,如果是则结束修改,否则,将该后一源文件作为当前源文件并转步骤C2。
3.如权利要求1所述的方法,其特征在于,所述文件系统包括但不限于FAT系统和NTFS文件系统。
4.如权利要求1到3任一项所述的方法,其特征在于,所述存储器包括但不限于软盘、硬盘和闪存。
全文摘要
本发明公开了一种合并文件的方法,以解决采用现有技术合并文件时存在占用大量系统资源和受到存储空间限制的问题;该方法为确定需要合并的源文件和各源文件的合并顺序;创建一个新文件作为合并后的目标文件,并将所述合并顺序中的第一个源文件在存储器中的起始位置作为该目标文件的起始位置,和将所有源文件的总长度作为该目标文件的长度记录在该目标文件的文件描述表中;修改文件系统中描述文件存储位置的链表,使所述合并顺序中前一个源文件的最后存储位置指向后一个源文件的起始存储位置;在文件系统中删除所有源文件的文件描述表。
文档编号G06F17/30GK1622094SQ200410102550
公开日2005年6月1日 申请日期2004年12月24日 优先权日2004年12月24日
发明者谭帅 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1