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

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

Info

Publication number
CN1776687A
CN1776687A CN 200510130647 CN200510130647A CN1776687A CN 1776687 A CN1776687 A CN 1776687A CN 200510130647 CN200510130647 CN 200510130647 CN 200510130647 A CN200510130647 A CN 200510130647A CN 1776687 A CN1776687 A CN 1776687A
Authority
CN
China
Prior art keywords
file
bunch
fat
file system
list item
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
Application number
CN 200510130647
Other languages
English (en)
Other versions
CN100419760C (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文件系统中文件分割的方法,一种优选的方案是步骤(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文件系统,本领域的技术人员都可以把它应用到其他场合中,例如应用到通用计算机或其他嵌入式开发中。本实施例仅用于支持本发明,本发明的保护范围应该由权利要求书限定。

Claims (5)

1、一种FAT文件系统中文件分割的方法,其特征在于包括以下步骤:
(1)获取文件的簇链表;
(2)把原始文件的簇链表划分为多个子链表;
(3)创建新的子文件表项结构;
(4)删除原始文件的表项结构。
2、如权利要求1所述的FAT文件系统中文件分割的方法,其特征在于步骤(3)创建的表项结构中包含以下信息:文件名字、属性、创建时间、访问时间、修改时间、文件大小、首簇值。
3、如权利要求1所述的FAT文件系统中文件分割的方法,其特征在于步骤(2)中,依据子文件的尺寸,把原始文件的簇链表划分为多个子链表。
4、一种使用如权利要求1所述的方法的装置,包括CPU和存储器,其特征在于存储器内包括一个FAT文件系统,当通过这个文件系统对文件进行分割时,将待分割的文件的簇链表划分为多个子链表,然后创建新的子文件表项结构,再删除原始文件的表项结构,完成文件分割过程。
5、如权利要求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 true CN1776687A (zh) 2006-05-24
CN100419760C 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)

Cited By (4)

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

Family Cites Families (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 半導体ファイルシステム
CN1291328C (zh) * 2003-12-11 2006-12-20 甘国工 将文件分割存储和还原处理的方法和系统
JP2005286366A (ja) * 2004-03-26 2005-10-13 Matsushita Electric Ind Co Ltd ファイル分割結合方法、並びに装置
CN100347705C (zh) * 2004-12-24 2007-11-07 北京中星微电子有限公司 一种合并文件的方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622352A (zh) * 2011-01-26 2012-08-01 深圳市闪联信息技术有限公司 一种实现共享文件的方法、服务器及系统
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对象存储的文件分割方法与系统
WO2021248406A1 (zh) * 2020-06-11 2021-12-16 华为技术有限公司 修复文件系统的方法和装置

Also Published As

Publication number Publication date
CN100419760C (zh) 2008-09-17

Similar Documents

Publication Publication Date Title
US10073854B2 (en) Data deduplication in a virtualization environment
US11169978B2 (en) Distributed pipeline optimization for data preparation
EP0798656B1 (en) File system level compression using holes
US8180956B2 (en) Method for controlling memory card and method for controlling nonvolatile semiconductor memory
JP6598996B2 (ja) データ準備のためのシグニチャベースのキャッシュ最適化
KR102264119B1 (ko) CaseDB: 엣지컴퓨팅을 위한 저비용 Put-Intensive 키-벨류 저장장치
CN105224237A (zh) 一种数据存储方法及装置
CN102129458A (zh) 关系型数据库的存储方法及装置
CN102999433B (zh) 一种虚拟磁盘的冗余数据删除方法及系统
CN1655134A (zh) 数据处理装置与操作系统进行数据交换的方法
KR20080104337A (ko) 플래시 컴포넌트 질의 시스템, 플래시 컴포넌트 질의 방법,및 플래시 드라이버
KR100703807B1 (ko) 블록 방식의 메모리에서 데이터의 변경 유형에 따라 블록을관리하는 방법 및 장치
CN101051317A (zh) 一种fat文件系统及其处理方法
CN100347705C (zh) 一种合并文件的方法
JP6598997B2 (ja) データ準備のためのキャッシュ最適化
CN1776687A (zh) Fat文件系统中文件分割的方法及其装置
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
CN101063976A (zh) 用于快速删除物理群集数据的方法和设备
US7779207B2 (en) Accelerated write performance
KR20090042570A (ko) 파일 관리 장치 및 방법과 기억 장치
US20210342293A1 (en) Pointer-based dynamic data structures in key-value stores
CN1889189A (zh) 支持分区的闪存存贮器件
WO2023249753A1 (en) File system metadata layout for append-only storage
CN114328417A (zh) 一种案例数据快速存取系统
CN100444166C (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