CN100419760C - Fat文件系统中文件分割的方法及其装置 - Google Patents

Fat文件系统中文件分割的方法及其装置 Download PDF

Info

Publication number
CN100419760C
CN100419760C CNB2005101306477A CN200510130647A CN100419760C CN 100419760 C CN100419760 C CN 100419760C CN B2005101306477 A CNB2005101306477 A CN B2005101306477A CN 200510130647 A CN200510130647 A CN 200510130647A CN 100419760 C CN100419760 C CN 100419760C
Authority
CN
China
Prior art keywords
file
fat
bunch
storer
file system
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.)
Expired - Fee Related
Application number
CNB2005101306477A
Other languages
English (en)
Other versions
CN1776687A (zh
Inventor
孙丰强
谭帅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Vimicro Corp
Original Assignee
Vimicro Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Vimicro Corp filed Critical Vimicro Corp
Priority to CNB2005101306477A priority Critical patent/CN100419760C/zh
Publication of CN1776687A publication Critical patent/CN1776687A/zh
Application granted granted Critical
Publication of CN100419760C publication Critical patent/CN100419760C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及计算机原理领域。本发明提出一种FAT文件系统中文件分割的方法,它对原文件的簇链表作出修改,创建新的子文件表项结构,最后删除原文件的簇链表,即完成了文件的分割操作。采用本发明,不需要对文件进行读写操作,只需要修改簇链表就可以实现对文件的分割,可以节约文件操作时间、节省系统的存储空间。

Description

FAT文件系统中文件分割的方法及其装置
技术领域
本发明涉及计算机原理领域,具体涉及FAT文件系统中一种文件分割的方法,以及使用这种方法的装置。
背景技术
FAT文件系统的文件存储原理是,当把一部分磁盘空间格式化为FAT文件系统时,FAT文件系统就将这个分区当成整块可分配的区域进行规划,以便于数据的存储。
FAT是Microsoft推出的文件系统,具有高度兼容性,目前仍然广泛应用于个人电脑尤其是移动存储设备中,FAT简单来讲由5部分组成,分别是MBR、DBR、FAT、目录区、数据区。其中,引导扇区(DBR)之后没有留有任何保留扇区,其后紧随的便是FAT表。FAT表用来记录磁盘数据区簇链结构的。FAT将磁盘空间按一定数目的扇区为单位进行划分,这样的单位称为簇。通常情况下,每扇区512字节的原则是不变的。簇的大小一般是2n(n为整数)个扇区的大小,实际中通常不超过32K。
格式化FAT分区时,格式化程序根据分区的大小确定簇的大小,然后根据保留扇区的数目、根目录的扇区数目、数据区可分的簇数与FAT表本身所占空间来确定FAT表所需的扇区数目,然后将计算后的结果写入DBR的相关位置。
FAT文件系统之所以有12,16,32不同的版本之分,其根本在于FAT表用来记录任意一簇链接的二进制位数。以FAT16为例,每一簇在FAT表中占据2字节(二进制16位)。
FAT表实际上是一个数据表,以2个字节为单位,这个单位称为FAT表项,通常情况其第1、2个表项用作介质描述。从第三个记录项开始记录除根目录外的其他文件及文件夹的簇链情况。
3种FAT文件系统结构中,簇的取值意义如下:
  FAT12记录项的取值   FAT16记录项的取值 FAT32记录项的取值 对应簇的表现情况
  000   0000   00000000   未分配的簇
  002~FFF   0002~FFEF   00000002~FFFFFFEF   已分配的簇
  FF0~FF6   FFF0~FFF6   FFFFFFF0~FFFFFFF6   系统保留
  FF7   FFF7   FFFFFFF7   坏簇
  FF8~FFF   FFF8~FFFF   FFFFFFF8~FFFFFFFF   文件结束簇
一段FAT16中的FAT表如图1所示。其中,FAT表以″F8 FF FF FF″开头,此2字节为介质描述单元,并不参与FAT表簇链关系。
相对偏移0x4~0x5偏移为第2簇(顺序上第1簇),此处为FF,表示存储在第2簇上的文件(目录)是个小文件,该文件只占用1个簇便结束了。
第3簇中存放的数据是0x0005,这是一个文件或文件夹的首簇。其内容为第5簇,就是说接下来的簇位于第5簇。FAT表指引我们到达FAT表的第5簇指向,上面写的数据是″FF FF″,即此文件已至尾簇。
第4簇中存放的数据是0x0006,这又是一个文件或文件夹的首簇。其内容为第6簇,就是说接下来的簇位于第6簇。FAT表指引我们到达FAT表的第6簇指向,上面写的数据是0x0007,就是说接下来的簇位于第7簇。FAT表指引我们到达FAT表的第7簇指向......直到根据FAT链读取到扇区相对偏移0x1A~0x1B,也就是第13簇,上面写的数据是0x000E,也就是指向第14簇。14簇的内容为″FF FF″,即此文件已至尾簇。
FAT文件系统中,当用户需要分割文件时,或操作系统根据需要把大文件分割成多个小文件时(尽管有时用户并不知道文件是经过分割的),现有技术的操作是,从FAT文件系统的定义可以看出,常规的文件分割方法需要把文件数据从头至尾一次读出并写入寄存器,然后在另一份存储空间内创建子文件,把之前读出的数据写入相应的子文件空间中。这样的做法的缺点是,一是有不需要的读写操作,它必须读取原文件的所有数据,然后再重新写入子文件;二是占用的寄存器多,因为文件的分割过程中需要两倍于文件体积的存储空间,一半用于寄存文件数据,另一半用于创建新的子文件。
例如,如图2所示,一个现有的文件A,FAT表为它指定的簇链表指明了这个文件是从簇8开始,簇85结束(即簇85的值为FF FF)。虽然这是一个完整的文件,可由于FAT文件系统中文件的链式存放结构,因此它实际上不是连续存放的。假设系统需要把这个文件分割为8个子文件,常规文件分割方法会将文件A的数据完全读入寄存器(buffer),然后在另一个存储空间内创建8个子文件,依次写入数据;保存并关闭8个子文件,最后删除原始文件A,清空文件A所占用的寄存器。显然这样需要寄存器空间用于存储文件A;还额外占用存储空间用于生成新的子文件,还需要必不可少的文件读写操作。
发明内容
(一)要解决的技术问题
本发明的目的是要克服目前现有技术的缺陷,提出一种快速、有效、可以减少读写操作、节约存储空间的FAT文件系统中文件分割的方法,以及可以使用这种方法的装置。
(二)技术方案
本发明提出一种FAT文件系统中文件分割的方法,包括以下步骤:
(1)获取文件的簇链表;
(2)依据子文件实际存储在物理位置上的大小把原始文件的簇链表划分为多个子链表;
(3)创建新的子文件表项结构;
(4)删除原始文件的表项结构。
上述的FAT文件系统中文件分割的方法,其中步骤(3)创建的表项结构中包含以下信息:文件名字、属性、创建时间、访问时间、修改时间、文件大小、首簇值。
本发明还提出一种装置,该装置使用了本发明提出的FAT文件系统差错处理方法,该装置包括CPU和存储器,其中,存储器内包括一个FAT文件系统,其中所述CPU作为中央处理单元与所述存储器之间的数据传输采用DMA传输方式,所述CPU通过存储器内的FAT文件系统获取文件的存储位置信息,当通过这个文件系统对文件进行分割时,所述CPU将存储器内待分割的文件的簇链表依据子文件实际存储在物理位置上的大小划分为多个子链表,然后创建新的子文件表项结构保存在所述存储器内,所述CPU再删除存储器内所述文件系统原始文件的表项结构,完成文件分割过程。
上述的装置,一种优选的方案是还包括USB模块,用于将该装置与计算机相连。
(三)有益效果
采用本发明提出的FAT文件系统中文件分割的方法实现文件分割,由于没有文件数据的读写操作,因此可以节省操作时间,节约了存储空间。对于大文件或速度较慢的小型处理器,有非常明显的效果。
附图说明
图1为一段FAT表的值;
图2为现有技术中文件的示意图;
图3为使用本发明提出的方法对文件进行分割后的文件示意图;
图4为本发明的实施例的模块图。
其中,1、扬声器;2、MCU系统。
具体实施方式
本发明提出的FAT文件系统中文件分割的方法结合附图和实施例说明如下。以下实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由各项权利要求限定。
参照图4,本实施例中,整个FAT文件系统放置在一片音频处理芯片中,这个音频处理芯片包括CPU和存储器部分,其中CPU和存储器之间的数据传输采用现有技术中常用的DMA(直接存储器存取)传输方式。具体在说,在这片音频芯片的存储器中设置了一个FAT文件系统。由于这个FAT文件系统,因此通过它可以完成对外部存储介质的管理,例如通过它读取外部的SD、MMC、NandFlash记忆卡中的数据。这种通过一个文件系统进行对外部存储介质的管理属于现有技术,类似于在通用计算机上通过操作系统完成对USB存储器的管理一样,在此不作赘述。
在这个MCU系统(MCU system)中,采用51C型CPU作为中央处理器,通过DMA方式与存储器之间通信。本装置采用现有技术中常用的音频处理模块,支持midi、mp3、wave多种格式的音乐播放功能,也支持midi+wave、midi+mp3的播放。这些音乐数据会通过音频混音(Audio Mix)模块,然后输出到EQ(智能)模块、3D模块,然后输出到扬声器。
这个MCU系统中还包括USB模块,这个音频处理芯片可以通过该模块与通用计算机(PC)之间进行数据传输。
对于存储在存储器中的文件系统而言,这个文件系统采用本发明提出的文件分割方法对文件进行分割操作。参照图2,对于文件A,假定系统需要把该文件分割为8个子文件,根据本发明,分割步骤大致可以描述为,首先根据需要,依据子文件的尺寸把原文件的簇链表分割为多个子簇链表,根据这些子簇链表,在文件系统的文件分配区创建相应的子文件的表项(entry),这些entry记录了各个子文件的存储信息,然后系统删除掉文件A的原来的entry结构。这样的做法一方面没有文件读写操作,另一方面不需要额外的消耗空间。
具体的实施过程是,首先读取这个文件A的存储位置信息,读取的过程可以用以下函数接口描述:
unsigned char f_getfatsector(unsigned long sector)
这个函数完成从磁盘中读取FAT表的功能。由于采用本发明进行文件分割的时候,是不需要进行文件本身的数据读写的,因此,读写数据时只需要读取这个文件的FAT表,获取文件A的簇链表即可。
然后,系统划分文件A的原有的簇链表,为这个文件创建多个新的簇链表,还需要为每个新的簇链表指定entry结构,这个entry结构包括每个子文件的首簇值。划分簇链表和创建子文件entry结构的操作分别由以下的函数接口完成:
unsigned char f_getclustervalue(unsigned long cluster,unsigned long*pvalue)
unsigned char f_setclustervalue(unsigned long cluster,unsigned long_tdata)
UINT8 f_addentry(F_NAME*fsname,F_POS*pos,F_DIRENTRY**pde)
以上3个函数会分别从FAT表中读取簇链表的值、设置簇链表的值,以及创建子文件的entry结构中并赋首簇值。这样,由于根据FAT文件系统的性质,任何一个文件的起始位置都是由它的entry中的首簇值决定的,而文件的簇链表决定了整个文件在磁盘上的具体的链式存储位置,因此,当这个文件具有多个独立的簇链表及其entry后,文件A也就被定义多个子文件。对于本例,其中子文件A1从簇8开始到簇11,A2从簇12开始到簇15......A8从簇82开始到簇85。相应的,系统使用上述2个函数会把文件A原有簇链表的簇11、簇15、簇85等等的值更改为FF FF,表明一个子文件至此已经到达末尾部分。这样,系统在读取这些簇链表时,会认为从簇8开始到簇11是一个文件,从簇12开始到簇15是另一个独立的文件,如何类推。
完成上述操作后,删除掉原文件A的entry结构。这样,文件分割的过程就完成了。
可见,采用本发明提出的FAT文件系统中文件分割的方法实现文件分割,实际上并没有进行真正意义上的文件分割,只是使用了FAT文件系统的链式存储的特点,修改文件的簇链表,以此同样达到了文件分割的目的。这样的操作,不需要移动文件时所需的操作时间,而且不需要移动文件所需的存储空间。因此,在节省操作时间的同时还节约了存储空间。这样的操作方法,对于大文件或速度较慢的小型处理器,有非常明显的效果,因此本发明非常适用于嵌入式系统的开发。
这种采用了本发明提出的FAT文件系统中文件分割方法的FAT文件系统,本领域的技术人员都可以把它应用到其他场合中,例如应用到通用计算机或其他嵌入式开发中。本实施例仅用于支持本发明,本发明的保护范围应该由权利要求书限定。

Claims (4)

1. 一种FAT文件系统中文件分割的方法,其特征在于包括以下步骤:
(1)获取文件的簇链表;
(2)依据子文件实际存储在物理位置上的大小把原始文件的簇链表划分为多个子链表;
(3)创建新的子文件表项结构;
(4)删除原始文件的表项结构。
2. 如权利要求1所述的FAT文件系统中文件分割的方法,其特征在于步骤(3)创建的表项结构中包含以下信息:文件名字、属性、创建时间、访问时间、修改时间、文件大小、首簇值。
3. 一种使用如权利要求1所述的方法的装置,包括CPU和存储器,其特征在于所述存储器内包括一个FAT文件系统,其中所述CPU作为中央处理单元与所述存储器之间的数据传输采用DMA传输方式,通过存储器内的FAT文件系统获取文件的存储位置信息,当通过这个文件系统对文件进行分割时,所述CPU将存储器内待分割的文件的簇链表依据子文件实际存储在物理位置上的大小划分为多个子链表,然后创建新的子文件表项结构保存在所述存储器内,所述CPU再删除存储器内所述FAT文件系统原始文件的表项结构,完成文件分割过程。
4. 如权利要求4所述的装置,其特征在于还包括USB模块,用于将该装置与计算机相连。
CNB2005101306477A 2005-12-16 2005-12-16 Fat文件系统中文件分割的方法及其装置 Expired - Fee Related CN100419760C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005101306477A CN100419760C (zh) 2005-12-16 2005-12-16 Fat文件系统中文件分割的方法及其装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005101306477A CN100419760C (zh) 2005-12-16 2005-12-16 Fat文件系统中文件分割的方法及其装置

Publications (2)

Publication Number Publication Date
CN1776687A CN1776687A (zh) 2006-05-24
CN100419760C true CN100419760C (zh) 2008-09-17

Family

ID=36766179

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101306477A Expired - Fee Related CN100419760C (zh) 2005-12-16 2005-12-16 Fat文件系统中文件分割的方法及其装置

Country Status (1)

Country Link
CN (1) CN100419760C (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622352B (zh) * 2011-01-26 2015-02-25 北京闪联云视信息技术有限公司 一种实现共享文件的方法、服务器及系统
CN103092849A (zh) * 2011-10-28 2013-05-08 浙江大华技术股份有限公司 文件系统簇管理方法
CN106021538A (zh) * 2016-05-27 2016-10-12 成都索贝数码科技股份有限公司 一种基于fics对象存储的文件分割方法与系统
CN115698934A (zh) * 2020-06-11 2023-02-03 华为技术有限公司 修复文件系统的方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003233951A (ja) * 2002-02-06 2003-08-22 Matsushita Electric Ind Co Ltd デジタル映像ファイル分割方法、及びデジタル映像ファイル分割装置
JP2004310656A (ja) * 2003-04-10 2004-11-04 Matsushita Electric Ind Co Ltd 半導体ファイルシステム
CN1622094A (zh) * 2004-12-24 2005-06-01 北京中星微电子有限公司 一种合并文件的方法
CN1627275A (zh) * 2003-12-11 2005-06-15 甘国工 将文件分割存储和还原处理的方法和系统
JP2005286366A (ja) * 2004-03-26 2005-10-13 Matsushita Electric Ind Co Ltd ファイル分割結合方法、並びに装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003233951A (ja) * 2002-02-06 2003-08-22 Matsushita Electric Ind Co Ltd デジタル映像ファイル分割方法、及びデジタル映像ファイル分割装置
JP2004310656A (ja) * 2003-04-10 2004-11-04 Matsushita Electric Ind Co Ltd 半導体ファイルシステム
CN1627275A (zh) * 2003-12-11 2005-06-15 甘国工 将文件分割存储和还原处理的方法和系统
JP2005286366A (ja) * 2004-03-26 2005-10-13 Matsushita Electric Ind Co Ltd ファイル分割結合方法、並びに装置
CN1622094A (zh) * 2004-12-24 2005-06-01 北京中星微电子有限公司 一种合并文件的方法

Also Published As

Publication number Publication date
CN1776687A (zh) 2006-05-24

Similar Documents

Publication Publication Date Title
KR101157171B1 (ko) 스마트카드를 위한 저장 시스템 및 그 저장시스템에서 파일생성관리방법
US10073854B2 (en) Data deduplication in a virtualization environment
CN100476825C (zh) 创建符号链接的方法以及使用符号链接的方法和装置
US5117495A (en) Method of sorting data records
JP6598996B2 (ja) データ準備のためのシグニチャベースのキャッシュ最適化
CN105224237A (zh) 一种数据存储方法及装置
CN101983376B (zh) 访问装置、信息记录装置、信息记录系统、文件管理方法和程序
CN101315628A (zh) 内存数据库系统及实现内存数据库的方法和装置
CN103186622B (zh) 一种全文检索系统中索引信息的更新方法以及装置
CN107239526A (zh) 文件系统实现方法、碎片整理方法、操作位置定位方法
CN104298681A (zh) 一种数据存储方法及装置
CN100419760C (zh) Fat文件系统中文件分割的方法及其装置
CN108628542A (zh) 一种文件合并方法及控制器
CN103246549A (zh) 一种数据转存的方法及系统
JP2018530838A (ja) データ準備のためのキャッシュ最適化
CN101063976B (zh) 用于快速删除物理群集数据的方法和设备
CN100334582C (zh) 在手持装置中存储和检索数据的方法及装置
CN106709014A (zh) 一种文件系统转换方法及装置
CN101303667B (zh) 建立磁盘空簇表及查找磁盘空簇的方法和装置
CN101441596A (zh) 提高闪存介质读写速度的方法
CN102236609A (zh) 存储设备及其访问方法
CN101246534A (zh) 一种具有autorun病毒免疫功能的U盘
US20230409235A1 (en) File system improvements for zoned storage device operations
CN100444166C (zh) Fat文件系统中基于位置的接口访问方法及其装置
CN100405330C (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: 20080917

Termination date: 20111216