CN101051317A - 一种fat文件系统及其处理方法 - Google Patents
一种fat文件系统及其处理方法 Download PDFInfo
- Publication number
- CN101051317A CN101051317A CN 200710099098 CN200710099098A CN101051317A CN 101051317 A CN101051317 A CN 101051317A CN 200710099098 CN200710099098 CN 200710099098 CN 200710099098 A CN200710099098 A CN 200710099098A CN 101051317 A CN101051317 A CN 101051317A
- Authority
- CN
- China
- Prior art keywords
- file
- subclauses
- clauses
- entries
- correspondence
- 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
- 238000003672 processing method Methods 0.000 title 1
- 238000012217 deletion Methods 0.000 claims description 4
- 230000037430 deletion Effects 0.000 claims description 4
- 238000000034 method Methods 0.000 abstract description 3
- 238000002372 labelling Methods 0.000 abstract 1
- 239000002699 waste material Substances 0.000 description 4
- 230000000052 comparative effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 210000000352 storage cell Anatomy 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
Images
Abstract
本发明提供一种FAT文件系统及其处理方法,其中,该方法包括下列步骤:步骤A:对要删除的文件做删除标记,同时清除与要删除的文件对应的FAT表项;步骤B:记录该删除文件的位置、以及该文件对应的条目数目,并从该文件逐步搜索到根目录的末尾,记录末尾文件的位置及其条目数目;步骤C:判断末尾文件对应的条目数目是否等于所述删除文件对应的条目数目,在末尾文件对应的条目数目等于所述删除文件对应的条目数目时,用该末尾文件的条目覆盖该删除文件的条目,并将原末尾文件处的条目内容全部置零,将其对应的标记置可用标记。本发明的FAT文件系统及其处理方法,能够重新利用被删除文件名所占的空间,避免因文件被删除造成的浪费。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种FAT文件系统及其处理方法。
背景技术
文件分配表(File Allocation Table,FAT)文件系统是微软定义的一种管理磁盘数据空间的文件系统,创建于70年代末80年代初,起初用于MS-DOS操作系统,只将其定位为一种简单的文件系统,只适合于软盘管理,而当时的软盘也不过1M的存储范围而已。随着新技术的不断发展,磁盘存储空间不断变大,最初的FAT设计已不能满足需要,因此微软在原有基础上对FAT进行了扩展,即现在的FAT12、FAT16、以及FAT32文件系统,这三种文件系统已基本满足不同存储空间范围的空间管理了。
对于一个空白的磁盘数据区,可以认为是一块连续的空白数据区,用户可以直接在该空白数据区上读写数据。而FAT文件系统,就是在该空白磁盘空间上做了一些定义规划,以方便使用磁盘空间。在定义了FAT文件系统之后,所有对磁盘空间的直接读写对用户而言是禁止的,只对FAT文件系统开放,用户对磁盘的操作通过FAT文件系统定义的接口来实现,例如打开文件、读写文件、关闭文件等操作。
现有的FAT文件系统包含4部分:参数区、FAT表、目录区以及数据区。FAT文件系统中规定了对磁盘读写操作的基本单位为512个字节,通常称为一个块(block),在block的基础上又定义了簇(Cluster)的概念,一个簇会包含1个或多个block,在参数区中说明具体包含的数目。其中,block是读写磁盘的最小单位。
其中,参数区,主要用于记录整个FAT文件系统中相关的参数设置。例如:一个簇包含几个block,一个FAT表由多少个block构成,一个文件系统包含多少个FAT表等。此外,在参数区中可能会保留几个block作为其它用途。
FAT表,用于对FAT文件系统的磁盘空间进行管理。FAT表中基本表项可以为12个bit,16个bit或32个bit,即所谓的FAT12、FAT16、FAT32。FAT表中一个基本表项对应于数据区的一个簇,简单地说,就是将磁盘划分为数据区和标记区,FAT表就是做标记的地方。实际上FAT表构造一个单向链表结构,对每一FAT表项而言,其可以包含两类信息,一是其为第几个表项,可通过FAT表项的索引值得知,例如从零开始;二是该表项里存储的相应数据,FAT文件系统将该数据的值定义为下一个FAT表项的索引值。这样就形成了一个单项链表,链表结束处FAT表项的值为零。
目录区,用于存储根目录下的文件名,FAT文件系统定义了根目录最多存储512个短文件名。目录区中的基本存储单位为条目(Entry)。一个短文件名对应一个条目,一个条目占32个字节(Byte),根目录下共有512个条目,共32个块(Block)。每一个条目中都包含指向的数据区的起始簇和文件大小,通过起始簇就可以再通过FAT表索引数据区,以此读取整个文件的内容。
其中:name,为文件或目录的名字;Ext,为扩展名;Attr,为属性字段;Time_ms,为时间字段;Create time,为创建时间;Create date,为创建日期;Access date,为最近一次访问日期;Start cluster HI,为文件或目录对应数据区的起始簇的高位;Modify time,为最近一次修改时间;Modify date,为最近一次修改日期;Start cluster LO,为文件或目录对应数据区的起始簇的低位;Filesize,为文件大小等。
如果到了目录区的末尾条目,即没有下一个可用的目录了,可以通过从末尾条目的下一个条目的全部字节置零来表示条目的结束。
数据区,其以簇为存储单位,通过文件的链表组织起来。其中的数据的读写都是被动的,FAT表指向哪就读哪。
在FAT文件系统中删除文件时,采用置标记的方式。以一个短文件名为例,一个短文件名在FAT16的根目录里是由32个字节来存储的,当删除一个文件时Windows的通常做法是将要删除的文件名的第一个字节改为0xE5,这样文件系统在浏览时若遇到这样标记过的文件项就会跳过,不作显示,但实际上这32个字节还放在那里,那么就少了一个文件存放了。
因此,现有的FAT文件系统存在以下问题:在现有的FAT文件系统中删除文件时只是对文件名做了删除标记,但是并不清除该文件名,这样文件虽然被删除,但是文件名仍占用着存储空间,由于对磁盘根目录的频繁写入、删除文件,会导致根目录下可创建的文件数目大大减小,就会出现磁盘剩余大量空间,但根目录却无法继续创建新文件。
发明内容
本发明的目的在于,提供一种FAT文件系统,能够重新利用被删除文件名所占的空间,避免因文件被删除后,表示该文件名的条目依旧存在,而造成的浪费。
本发明的另一目的在于,提供一种FAT文件系统的处理方法,能够重新利用被删除文件名所占的空间,避免因文件被删除后,表示该文件名的条目依旧存在,而造成的浪费。
本发明的FAT文件系统的处理方法,包括下列步骤:
步骤A:对要删除的文件做删除标记,同时清除与要删除的文件对应的FAT表项;
步骤B:记录所述删除文件的位置、以及该文件对应的条目数目,并从该文件逐步搜索到根目录的末尾,记录末尾文件的位置及其条目数目;
步骤C:判断所述末尾文件对应的条目数目是否等于所述删除文件对应的条目数目,在所述末尾文件对应的条目数目等于所述删除文件对应的条目数目时,用所述末尾文件的条目覆盖所述删除文件的条目,并将原末尾文件处的条目内容全部置零,将其对应的标记置可用标记;否则,返回步骤300。
其中,在所述步骤A之前,进一步包括下列步骤:
预先定义一个存储模块,存储与各个条目相对应的标记,FAT文件系统在扫描根目录时,可以根据各个标记得知相应的条目是否可用。
其中,所述存储模块以一个大小与根目录下的条目数目相一致的数组形式存在。
在步骤C中,如果所述末尾文件对应的条目数目不等于所述删除文件对应的条目数目时,可以执行下列步骤:
扫描并定位所述删除文件后的第一个为不可用标记的条目位置,将从该不可用标记的条目一直到末尾文件相应的条目逐个向前移动该删除文件对应的条目所占的空间,以覆盖前面的条目。
本发明的FAT文件系统,包括查询单元、分析单元、执行单元,其中:
所述查询单元,用于查询并记录删除文件的位置和删除文件对应的条目数目,以及查询并记录末尾文件的位置及其条目数目,并将查询结果发送至分析单元;分析单元,用于将查询单元发送来的删除文件对应的条目数目和末尾文件对应的条目数目进行比较,在比较结果为y1等于y2时,通知执行单元用所述末尾文件的条目覆盖所述删除文件的条目;执行单元,用于根据分析单元发送来的通知用所述末尾文件的条目覆盖所述删除文件的条目,并将原末尾文件处的条目内容全部置零,将其对应的标记置可用标记。
其中,所述查询单元中,可以进一步包括存储模块,用于存储根目录下表示各个条目是否可用的标记。
所述存储模块可以为一个大小与根目录下的条目数目相一致的数组。
所述分析单元,可以进一步用于在所述末尾文件对应的条目数目不等于所述删除文件对应的条目数目时,通知执行单元将所述删除文件后的第一个为不可用标记的条目一直到末尾文件相应的的条目逐个向前移动所述删除文件对应的条目所占的空间,以覆盖前面的条目。
本发明的有益效果是:依照本发明的FAT文件系统及其处理方法,通过重新利用被删除文件名所占的空间,避免因文件被删除后,表示该文件名的条目依旧存在,而造成的浪费。
附图说明
图1为本发明的FAT文件系统的处理方法流程图;
图2为本发明的FAT文件系统的结构示意图。
具体实施方式
以下,参考图1~2详细描述本发明的FAT文件系统及其处理方法。
如图1所示,为本发明的FAT文件系统的处理方法流程图,包括下列步骤:
步骤100:对要删除的文件做删除标记,同时清除与要删除的文件对应的FAT表项。
其中,在步骤100中,对要删除的文件做删除标记,包括下列步骤:
步骤11:在删除文件时,首先搜索该文件对应的条目,例如可以通过比较该文件相应的条目(Entry)中的文件名来找到该文件;
步骤12:在该条目的第一个字节(Byte)置特定标记,即删除标记,例如0xE5。
此外,在步骤100之前,进一步包括下列步骤:预先定义一个存储模块,存储与各个条目相对应的标记,FAT文件系统在扫描根目录时,可以根据各个标记得知相应的条目是否可用。
在具体实现时,该存储模块可以为一个大小与根目录下的条目数目相一致的数组。例如,对于只有512个条目项的FAT16文件系统而言,可以建立一个数组bool bEntry[512],用于存储与各个条目相对应的标记。
步骤200:记录该文件的位置、以及该文件对应的条目数目,并从该文件逐步搜索到根目录的末尾,记录末尾文件的位置及其条目数目;
其中:末尾文件的条目以后的内容全为零。
其中,可以用x1表示删除文件的位置,用y1表示该文件对应的条目数目;用x2表示末尾文件的位置,用y2表示末尾文件对应的条目数目。在现有的FAT文件系统中规定,一个短文件名对应的条目数目为1,一个长文件名对应的条目数目至少为2。
步骤300:判断y2是否等于y1,在y2等于y1时,用x2处的条目覆盖x1处的条目,并将原x2处的条目内容全部置零,将其置可用标记。
这里,判断y1是否等于y2的目的在于:判断末尾文件与删除文件是否都是短文件名,或者是否是具有相同条目数目的长文件名。如果两个文件相应的条目数目不一致,则会出现不能替换或造成浪费的问题。例如:如果末尾文件的文件名为3个条目的长文件名,而删除文件的文件名为1个条目的短文件名,此时,会出现不能替换的问题,反之会造成浪费的问题。
因此,为了解决上述问题,基于如上所述,在步骤300中,如果y2不等于y1时,可以执行下列步骤:
扫描并定位该删除文件后的第一个为不可用标记的条目位置,将从该不可用标记的条目一直到末尾文件相应的条目逐个向前移动该删除文件对应的条目所占的空间,以覆盖前面的条目。
例如,该删除文件对应的条目数目为2,则从该不可用标记的条目一直到末尾文件相应的条目逐个向前移动2个条目,以覆盖前面的条目。
下面,对本发明的FAT文件系统进行描述,如图2所示,在该FAT文件系统中包括:执行单元、查询单元、分析单元。其中:
查询单元,用于查询并记录删除文件的位置x1和删除文件对应的条目数目y1,以及查询并记录末尾文件的位置及其条目数目,并将查询结果发送至分析单元;
其中,在查询单元中,包括存储模块,用于存储根目录下表示各个条目是否可用的标记。
例如,对于只有512个条目的FAT16文件系统而言,该存储模块可以存储与512个条目相应的512个标记。
分析单元,用于将查询单元发送来的删除文件对应的条目数目y1和末尾文件对应的条目数目y2进行比较,在比较结果为y1等于y2时,通知执行单元用x2处的条目覆盖x1处的条目;
执行单元,用于根据分析单元发送来的通知用x2处的条目覆盖x1处的条目,并将原x2处的条目内容全部置零,将其对应的标记置可用标记。
此外,分析单元,可以进一步用于在比较结果为y1不等于y2时,通知执行单元将该删除文件后的第一个为不可用标记的条目一直到末尾文件相应的条目逐个向前移动该删除文件对应的条目所占的空间,以覆盖前面的条目。
综上所述,依照本发明的FAT文件系统的处理方法,能够重新利用被删除文件名所占的空间,避免因文件被删除后,表示该文件名的条目依旧存在,而造成的浪费。
以上是为了使本领域普通技术人员理解本发明,而对本发明所进行的详细描述,但可以想到,在不脱离本发明的权利要求所涵盖的范围内还可以做出其它的变化和修改,这些变化和修改均在本发明的保护范围内。
Claims (8)
1.一种FAT文件系统的处理方法,其特征在于,包括下列步骤:
步骤A:对要删除的文件做删除标记,同时清除与要删除的文件对应的FAT表项;
步骤B:记录所述删除文件的位置、以及该文件对应的条目数目,并从该文件逐步搜索到根目录的末尾,记录末尾文件的位置及其条目数目;
步骤C:判断所述末尾文件对应的条目数目是否等于所述删除文件对应的条目数目,在所述末尾文件对应的条目数目等于所述删除文件对应的条目数目时,用所述末尾文件的条目覆盖所述删除文件的条目,并将原末尾文件处的条目内容全部置零,将其对应的标记置可用标记。
2.如权利要求1所述的FAT文件系统的处理方法,其特征在于,在所述步骤A之前,进一步包括下列步骤:
预先设置一个存储模块,存储与各个条目相对应的标记,FAT文件系统在扫描根目录时,可以根据各个标记得知相应的条目是否可用。
3.如权利要求2所述的FAT文件系统的处理方法,其特征在于,所述存储模块以一个大小与根目录下的条目数目相一致的数组形式存在。
4.如权利要求2所述的FAT文件系统的处理方法,其特征在于,在步骤C中,如果所述末尾文件对应的条目数目不等于所述删除文件对应的条目数目时,执行下列步骤:
扫描并定位所述删除文件后的第一个为不可用标记的条目位置,将从该不可用标记的条目一直到末尾文件相应的条目逐个向前移动该删除文件对应的条目所占的空间,以覆盖前面的条目。
5.一种FAT文件系统,其特征在于,包括查询单元、分析单元、执行单元,其中:
所述查询单元,用于查询并记录删除文件的位置和删除文件对应的条目数目,以及查询并记录末尾文件的位置及其条目数目,并将查询结果发送至分析单元;
分析单元,用于将查询单元发送来的删除文件对应的条目数目和末尾文件对应的条目数目进行比较,在所述末尾文件对应的条目数目等于所述删除文件对应的条目数目时,通知执行单元用所述末尾文件的条目覆盖所述删除文件的条目;
执行单元,用于根据分析单元发送来的通知用所述末尾文件的条目覆盖所述删除文件的条目,并将原末尾文件处的条目内容全部置零,将其对应的标记置可用标记。
6.如权利要求5所述的FAT文件系统,其特征在于,所述查询单元中,进一步包括存储模块,用于存储根目录下表示各个条目是否可用的标记。
7.如权利要求6所述的FAT文件系统,其特征在于,所述存储模块为一个大小与根目录下的条目数目相一致的数组。
8.如权利要求6所述的FAT文件系统,其特征在于,所述分析单元,进一步用于在所述末尾文件对应的条目数目不等于所述删除文件对应的条目数目时,通知执行单元将所述删除文件后的第一个为不可用标记的条目一直到末尾文件相应的的条目逐个向前移动所述删除文件对应的条目所占的空间,以覆盖前面的条目。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100990980A CN100507919C (zh) | 2007-05-11 | 2007-05-11 | 一种fat文件系统及其处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100990980A CN100507919C (zh) | 2007-05-11 | 2007-05-11 | 一种fat文件系统及其处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101051317A true CN101051317A (zh) | 2007-10-10 |
CN100507919C CN100507919C (zh) | 2009-07-01 |
Family
ID=38782729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100990980A Expired - Fee Related CN100507919C (zh) | 2007-05-11 | 2007-05-11 | 一种fat文件系统及其处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100507919C (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100557611C (zh) * | 2007-11-15 | 2009-11-04 | 深圳华为通信技术有限公司 | 一种文件的处理方法和装置 |
CN102024060A (zh) * | 2010-12-31 | 2011-04-20 | 山西奥克斯电子系统工程中心 | 存储文件及恢复误删除文件的方法 |
CN102314490A (zh) * | 2011-08-16 | 2012-01-11 | 晨星软件研发(深圳)有限公司 | 一种Linux FAT文件系统修复方法及装置 |
CN102331973A (zh) * | 2011-03-18 | 2012-01-25 | 北京神州数码思特奇信息技术股份有限公司 | 一种内存数据存储系统和内存数据的插入、删除方法 |
CN102841894A (zh) * | 2011-06-22 | 2012-12-26 | 比亚迪股份有限公司 | 一种文件分配表的数据存储方法 |
CN101782921B (zh) * | 2009-12-28 | 2013-01-16 | 北京握奇数据系统有限公司 | 一种目录创建、查询和删除方法及装置 |
CN104268184A (zh) * | 2014-09-16 | 2015-01-07 | 青岛海信移动通信技术股份有限公司 | 一种移动终端中的文件删除方法和终端 |
CN106326384A (zh) * | 2016-08-16 | 2017-01-11 | 中国科学院长春光学精密机械与物理研究所 | 基于fpga的适用于高速海量存储的文件存储方法 |
CN108170372A (zh) * | 2017-12-08 | 2018-06-15 | 厦门集微科技有限公司 | 基于云硬盘的数据处理方法和装置 |
CN110286859A (zh) * | 2019-06-28 | 2019-09-27 | 中国海洋大学 | 基于fat文件系统的数据存储方法及装置 |
-
2007
- 2007-05-11 CN CNB2007100990980A patent/CN100507919C/zh not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100557611C (zh) * | 2007-11-15 | 2009-11-04 | 深圳华为通信技术有限公司 | 一种文件的处理方法和装置 |
CN101782921B (zh) * | 2009-12-28 | 2013-01-16 | 北京握奇数据系统有限公司 | 一种目录创建、查询和删除方法及装置 |
CN102024060B (zh) * | 2010-12-31 | 2012-10-24 | 山西奥克斯电子系统工程中心 | 存储文件及恢复误删除文件的方法 |
CN102024060A (zh) * | 2010-12-31 | 2011-04-20 | 山西奥克斯电子系统工程中心 | 存储文件及恢复误删除文件的方法 |
CN102331973A (zh) * | 2011-03-18 | 2012-01-25 | 北京神州数码思特奇信息技术股份有限公司 | 一种内存数据存储系统和内存数据的插入、删除方法 |
CN102841894A (zh) * | 2011-06-22 | 2012-12-26 | 比亚迪股份有限公司 | 一种文件分配表的数据存储方法 |
CN102314490A (zh) * | 2011-08-16 | 2012-01-11 | 晨星软件研发(深圳)有限公司 | 一种Linux FAT文件系统修复方法及装置 |
CN102314490B (zh) * | 2011-08-16 | 2013-07-10 | 晨星软件研发(深圳)有限公司 | 一种Linux FAT文件系统修复方法及装置 |
CN104268184A (zh) * | 2014-09-16 | 2015-01-07 | 青岛海信移动通信技术股份有限公司 | 一种移动终端中的文件删除方法和终端 |
CN104268184B (zh) * | 2014-09-16 | 2017-11-21 | 青岛海信移动通信技术股份有限公司 | 一种移动终端中的文件删除方法和终端 |
CN106326384A (zh) * | 2016-08-16 | 2017-01-11 | 中国科学院长春光学精密机械与物理研究所 | 基于fpga的适用于高速海量存储的文件存储方法 |
CN108170372A (zh) * | 2017-12-08 | 2018-06-15 | 厦门集微科技有限公司 | 基于云硬盘的数据处理方法和装置 |
CN110286859A (zh) * | 2019-06-28 | 2019-09-27 | 中国海洋大学 | 基于fat文件系统的数据存储方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN100507919C (zh) | 2009-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101051317A (zh) | 一种fat文件系统及其处理方法 | |
CN111656341B (zh) | 用于lsm数据结构中有效记录查找的高速缓存 | |
CN1311358C (zh) | 对迁移和清除候选者的有效查找 | |
CN101743546B (zh) | 用于提供快照的文件系统的分层存储管理 | |
US7403960B2 (en) | Method and system for creating snapshots by condition | |
US9342528B2 (en) | Method and apparatus for tiered storage | |
US7689574B2 (en) | Index and method for extending and querying index | |
US20110258374A1 (en) | Method for optimizing the memory usage and performance of data deduplication storage systems | |
US20060041606A1 (en) | Indexing system for a computer file store | |
CN1204501C (zh) | Flash存储文件管理方法 | |
CN1904889A (zh) | 用附着属性存储逻辑文件系统元数据的方法 | |
CN101042703A (zh) | 使用数据库管理系统管理文件系统的数据的方法 | |
JP2022500723A (ja) | データベースにおいてレコードを一括削除するためのシステムおよび方法 | |
CN1845093A (zh) | 一种属性可扩展的对象文件系统 | |
CN100347705C (zh) | 一种合并文件的方法 | |
US20080250017A1 (en) | System and method for aiding file searching and file serving by indexing historical filenames and locations | |
JP2015082291A (ja) | WORM(WriteOnceReadMany)を実現するファイルシステム | |
EP1845461A1 (en) | Fast file attribute search | |
KR100907477B1 (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 | |
CN1146819C (zh) | 电脑文件名称搜寻系统 | |
CN101034416A (zh) | 一种利用文件分配表进行文件寻道的方法及系统架构 | |
CN1904881A (zh) | 数据库归档数据的检索方法 | |
CN103257928A (zh) | 闪存设备数据管理方法和系统 | |
EP3436973A1 (en) | File system support for file-level ghosting | |
CN110837478A (zh) | 文件管理方法、存储介质和电子设备 |
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: 20090701 Termination date: 20120511 |