CN1622094A - 一种合并文件的方法 - Google Patents
一种合并文件的方法 Download PDFInfo
- Publication number
- CN1622094A CN1622094A CN 200410102550 CN200410102550A CN1622094A CN 1622094 A CN1622094 A CN 1622094A CN 200410102550 CN200410102550 CN 200410102550 CN 200410102550 A CN200410102550 A CN 200410102550A CN 1622094 A CN1622094 A CN 1622094A
- Authority
- CN
- China
- Prior art keywords
- file
- source file
- source
- memory location
- merged
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000005516 engineering process Methods 0.000 claims description 5
- 238000012986 modification Methods 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 5
- 238000012217 deletion Methods 0.000 claims description 4
- 230000037430 deletion Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 3
- 230000007812 deficiency Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种合并文件的方法,以解决采用现有技术合并文件时存在占用大量系统资源和受到存储空间限制的问题;该方法为:确定需要合并的源文件和各源文件的合并顺序;创建一个新文件作为合并后的目标文件,并将所述合并顺序中的第一个源文件在存储器中的起始位置作为该目标文件的起始位置,和将所有源文件的总长度作为该目标文件的长度记录在该目标文件的文件描述表中;修改文件系统中描述文件存储位置的链表,使所述合并顺序中前一个源文件的最后存储位置指向后一个源文件的起始存储位置;在文件系统中删除所有源文件的文件描述表。
Description
技术领域
本发明涉及计算机和通信领域的文件系统技术,尤其涉及一种在文件系统中合并文件的方法。
背景技术
在计算机的实际应用中,经常需要按照一定顺序对多个文件进行合并。如,当通过多媒体硬件向文件系统写入数据时,一般包括视频和音频的数据,而通常的视频和音频播放文件的标准(如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等操作系统)。上述的存储器包括但不限于软盘、硬盘和闪存等。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (4)
1、一种合并文件的方法,用于将存储器上的多个文件按顺序合并成一个文件;其特征在于包括如下步骤:
A、确定需要合并的源文件和各源文件的合并顺序;
B、创建一个新文件作为合并后的目标文件,并将所述合并顺序中的第一个源文件在存储器中的起始位置作为该目标文件的起始位置,和将所有源文件的总长度作为该目标文件的长度记录在该目标文件的文件描述表中;
C、修改文件系统中描述文件存储位置的链表,使所述合并顺序中前一个源文件的最后存储位置指向后一个源文件的起始存储位置;
D、在文件系统中删除所有源文件的文件描述表。
2、如权利要求1所述的方法,其特征在于,步骤C包括如下步骤:
C1、将所述合并顺序中的第一个源文件作为当前源文件;
C2、在描述文件存储位置的链表中查找描述当前源文件的最后存储位置的表项,和根据合并顺序获取当前源文件的后一源文件的起始存储位置;
C3、修改描述当前源文件的最后存储位置的表项,使该表项中的下一存储位置指向所述后一源文件的起始存储位置;
C4、确定所述源文件在所述合并顺序中是否为最后的源文件,如果是则结束修改,否则,将该后一源文件作为当前源文件并转步骤C2。
3、如权利要求1所述的方法,其特征在于,所述文件系统包括但不限于FAT系统和NTFS文件系统。
4、如权利要求1到3任一项所述的方法,其特征在于,所述存储器包括但不限于软盘、硬盘和闪存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004101025500A CN100347705C (zh) | 2004-12-24 | 2004-12-24 | 一种合并文件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004101025500A CN100347705C (zh) | 2004-12-24 | 2004-12-24 | 一种合并文件的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1622094A true CN1622094A (zh) | 2005-06-01 |
CN100347705C CN100347705C (zh) | 2007-11-07 |
Family
ID=34766811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004101025500A Expired - Fee Related CN100347705C (zh) | 2004-12-24 | 2004-12-24 | 一种合并文件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100347705C (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100386761C (zh) * | 2005-10-26 | 2008-05-07 | 北京和利时系统工程股份有限公司 | 一种数据文件合并方法 |
CN100419760C (zh) * | 2005-12-16 | 2008-09-17 | 北京中星微电子有限公司 | Fat文件系统中文件分割的方法及其装置 |
CN1952925B (zh) * | 2005-10-17 | 2012-02-22 | 佳能株式会社 | 文档处理设备和方法 |
CN103517135A (zh) * | 2012-06-28 | 2014-01-15 | Tcl集团股份有限公司 | 一种连续播放mp4格式视频文件的方法、系统及电视 |
CN104750637A (zh) * | 2013-12-31 | 2015-07-01 | 国际商业机器公司 | 用于加速器的可扩展输入/输出数据机制 |
CN105528348A (zh) * | 2014-09-28 | 2016-04-27 | 阿里巴巴集团控股有限公司 | 媒体文件的处理方法及装置 |
CN106021536A (zh) * | 2016-05-27 | 2016-10-12 | 成都索贝数码科技股份有限公司 | 一种基于fics对象存储的数据插入方法与系统 |
CN106021217A (zh) * | 2016-05-27 | 2016-10-12 | 成都索贝数码科技股份有限公司 | 一种基于fics对象存储的大文件数据的编辑方法与系统 |
CN106095794A (zh) * | 2016-05-27 | 2016-11-09 | 成都索贝数码科技股份有限公司 | 一种基于fics对象存储的文件合并方法与系统 |
CN106611024A (zh) * | 2015-10-27 | 2017-05-03 | 北京国双科技有限公司 | 文件合并方法和装置 |
CN107329765A (zh) * | 2017-07-04 | 2017-11-07 | 武汉斗鱼网络科技有限公司 | 程序文件处理方法及装置 |
CN107729558A (zh) * | 2017-11-08 | 2018-02-23 | 郑州云海信息技术有限公司 | 文件系统碎片整理的方法、系统、装置及计算机存储介质 |
CN108874297A (zh) * | 2017-05-10 | 2018-11-23 | 华为技术有限公司 | 合并文件的方法、存储装置、存储设备和存储介质 |
CN109413487A (zh) * | 2018-11-07 | 2019-03-01 | 成都索贝数码科技股份有限公司 | 一种基于对象存储分片转码/合成视频文件后闪拼的方法 |
CN107644056B (zh) * | 2017-08-04 | 2021-02-12 | 武汉烽火众智数字技术有限责任公司 | 一种文件存储方法、装置及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1113304C (zh) * | 1998-09-18 | 2003-07-02 | 英业达股份有限公司 | 合并档案文件的方法和开启或执行集合档案文件的方法 |
GB9822841D0 (en) * | 1998-10-20 | 1998-12-16 | Koninkl Philips Electronics Nv | File systems supporting data sharing |
US20040181536A1 (en) * | 2001-05-31 | 2004-09-16 | Satoshi Matsuura | Information providing method, provided information recording apparatus, provided information reading apparatus, and cooking-related device |
CN100504854C (zh) * | 2003-01-14 | 2009-06-24 | 联想(北京)有限公司 | 文件管理方法 |
-
2004
- 2004-12-24 CN CNB2004101025500A patent/CN100347705C/zh not_active Expired - Fee Related
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1952925B (zh) * | 2005-10-17 | 2012-02-22 | 佳能株式会社 | 文档处理设备和方法 |
CN100386761C (zh) * | 2005-10-26 | 2008-05-07 | 北京和利时系统工程股份有限公司 | 一种数据文件合并方法 |
CN100419760C (zh) * | 2005-12-16 | 2008-09-17 | 北京中星微电子有限公司 | Fat文件系统中文件分割的方法及其装置 |
CN103517135B (zh) * | 2012-06-28 | 2017-02-08 | Tcl集团股份有限公司 | 一种连续播放mp4格式视频文件的方法、系统及电视 |
CN103517135A (zh) * | 2012-06-28 | 2014-01-15 | Tcl集团股份有限公司 | 一种连续播放mp4格式视频文件的方法、系统及电视 |
CN104750637A (zh) * | 2013-12-31 | 2015-07-01 | 国际商业机器公司 | 用于加速器的可扩展输入/输出数据机制 |
CN104750637B (zh) * | 2013-12-31 | 2018-04-06 | 国际商业机器公司 | 用于加速器的可扩展输入/输出数据机制 |
CN105528348A (zh) * | 2014-09-28 | 2016-04-27 | 阿里巴巴集团控股有限公司 | 媒体文件的处理方法及装置 |
CN105528348B (zh) * | 2014-09-28 | 2020-03-20 | 阿里巴巴集团控股有限公司 | 媒体文件的处理方法及装置 |
CN106611024A (zh) * | 2015-10-27 | 2017-05-03 | 北京国双科技有限公司 | 文件合并方法和装置 |
CN106611024B (zh) * | 2015-10-27 | 2020-08-11 | 北京国双科技有限公司 | 文件合并方法和装置 |
CN106095794A (zh) * | 2016-05-27 | 2016-11-09 | 成都索贝数码科技股份有限公司 | 一种基于fics对象存储的文件合并方法与系统 |
CN106021217A (zh) * | 2016-05-27 | 2016-10-12 | 成都索贝数码科技股份有限公司 | 一种基于fics对象存储的大文件数据的编辑方法与系统 |
CN106021536A (zh) * | 2016-05-27 | 2016-10-12 | 成都索贝数码科技股份有限公司 | 一种基于fics对象存储的数据插入方法与系统 |
CN108874297A (zh) * | 2017-05-10 | 2018-11-23 | 华为技术有限公司 | 合并文件的方法、存储装置、存储设备和存储介质 |
CN107329765A (zh) * | 2017-07-04 | 2017-11-07 | 武汉斗鱼网络科技有限公司 | 程序文件处理方法及装置 |
CN107329765B (zh) * | 2017-07-04 | 2020-09-04 | 武汉斗鱼网络科技有限公司 | 程序文件处理方法及装置 |
CN107644056B (zh) * | 2017-08-04 | 2021-02-12 | 武汉烽火众智数字技术有限责任公司 | 一种文件存储方法、装置及系统 |
CN107729558A (zh) * | 2017-11-08 | 2018-02-23 | 郑州云海信息技术有限公司 | 文件系统碎片整理的方法、系统、装置及计算机存储介质 |
CN107729558B (zh) * | 2017-11-08 | 2021-06-29 | 郑州云海信息技术有限公司 | 文件系统碎片整理的方法、系统、装置及计算机存储介质 |
CN109413487A (zh) * | 2018-11-07 | 2019-03-01 | 成都索贝数码科技股份有限公司 | 一种基于对象存储分片转码/合成视频文件后闪拼的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100347705C (zh) | 2007-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100347705C (zh) | 一种合并文件的方法 | |
CN110825748B (zh) | 利用差异化索引机制的高性能和易扩展的键值存储方法 | |
US8799238B2 (en) | Data deduplication | |
CN102129458B (zh) | 关系型数据库的存储方法及装置 | |
US9043540B2 (en) | Systems and methods for tracking block ownership | |
CN101556557B (zh) | 一种基于对象存储设备的对象文件组织方法 | |
US8423733B1 (en) | Single-copy implicit sharing among clones | |
CN1020014C (zh) | 快速开启由路径名识别的磁盘文件的方法 | |
CN1619544A (zh) | 数据处理方法和装置 | |
CN103631940A (zh) | 一种应用于hbase数据库的数据写入方法及系统 | |
CN103064639A (zh) | 数据存储方法及装置 | |
CN101039278A (zh) | 数据管理方法及系统 | |
CN102289451A (zh) | 文件或文件夹查找方法和装置 | |
CN103020255A (zh) | 分级存储方法和装置 | |
KR102264119B1 (ko) | CaseDB: 엣지컴퓨팅을 위한 저비용 Put-Intensive 키-벨류 저장장치 | |
CN105740334A (zh) | 一种文件系统中异步批量创建文件的系统及方法 | |
CN101051317A (zh) | 一种fat文件系统及其处理方法 | |
CN103425435A (zh) | 磁盘存储方法及磁盘存储系统 | |
CN1614591A (zh) | 一种组织和访问分布式文件系统目录的方法 | |
KR100907477B1 (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 | |
JP6531574B2 (ja) | ストレージ装置、ストレージ装置制御プログラム及びストレージ装置制御方法 | |
CN101034416A (zh) | 一种利用文件分配表进行文件寻道的方法及系统架构 | |
US9483469B1 (en) | Techniques for optimizing disk access | |
CN114328417A (zh) | 一种案例数据快速存取系统 | |
CN1776687A (zh) | Fat文件系统中文件分割的方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20071107 Termination date: 20111224 |