Fat文件系统中文件分割的方法及其装置的制作方法

文档序号:6651361阅读:229来源:国知局
专利名称: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文件系统结构中,簇的取值意义如下

一段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文件系统中文件分割的方法,一种优选的方案是步骤(2)中,依据子文件的尺寸,把原始文件的簇链表划分为多个子链表。
本发明还提出一种装置,该装置使用了本发明提出的FAT文件系统差错处理方法,该装置包括CPU和存储器,其中,存储器内包括一个FAT文件系统,当通过这个文件系统对文件进行分割时,将待分割的文件的簇链表划分为多个子链表,然后创建新的子文件表项结构,再删除原始文件的表项结构,完成文件分割过程。
上述的装置,一种优选的方案是还包括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文件系统,本领域的技术人员都可以把它应用到其他场合中,例如应用到通用计算机或其他嵌入式开发中。本实施例仅用于支持本发明,本发明的保护范围应该由权利要求书限定。
权利要求
1.一种FAT文件系统中文件分割的方法,其特征在于包括以下步骤(1)获取文件的簇链表;(2)把原始文件的簇链表划分为多个子链表;(3)创建新的子文件表项结构;(4)删除原始文件的表项结构。
2.如权利要求1所述的FAT文件系统中文件分割的方法,其特征在于步骤(3)创建的表项结构中包含以下信息文件名字、属性、创建时间、访问时间、修改时间、文件大小、首簇值。
3.如权利要求1所述的FAT文件系统中文件分割的方法,其特征在于步骤(2)中,依据子文件的尺寸,把原始文件的簇链表划分为多个子链表。
4.一种使用如权利要求1所述的方法的装置,包括CPU和存储器,其特征在于存储器内包括一个FAT文件系统,当通过这个文件系统对文件进行分割时,将待分割的文件的簇链表划分为多个子链表,然后创建新的子文件表项结构,再删除原始文件的表项结构,完成文件分割过程。
5.如权利要求4所述的装置,其特征在于还包括USB模块,用于将该装置与计算机相连。
全文摘要
本发明涉及计算机原理领域。本发明提出一种FAT文件系统中文件分割的方法,它对原文件的簇链表作出修改,创建新的子文件表项结构,最后删除原文件的簇链表,即完成了文件的分割操作。采用本发明,不需要对文件进行读写操作,只需要修改簇链表就可以实现对文件的分割,可以节约文件操作时间、节省系统的存储空间。
文档编号G06F17/30GK1776687SQ20051013064
公开日2006年5月24日 申请日期2005年12月16日 优先权日2005年12月16日
发明者孙丰强, 谭帅 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1