基于FAT文件系统的查找空闲簇的方法和系统技术方案

技术编号:17779334 阅读:51 留言:0更新日期:2018-04-22 07:39
本发明专利技术涉及一种基于FAT文件系统的查找空闲簇的方法和系统,通过获取FAT文件分配表的映射表;根据所述映射表获取所述FAT文件分配表所占用的存在空闲簇记录的扇区;在所述存在空闲簇记录的扇区中查找空闲簇项,根据所述空闲簇项计算所述空闲簇的位置。在本方案中,通过映射表可以直接找到FAT文件分配表中存在空闲簇记录的扇区,避免从FAT文件分配表的起始扇区开始逐一查找,节省空闲簇的查找时间,提高了空闲簇的查找效率。

【技术实现步骤摘要】
基于FAT文件系统的查找空闲簇的方法和系统
本专利技术涉及数据存储领域,特别涉及一种基于FAT文件系统的查找空闲簇的方法和系统。
技术介绍
FAT(FileAllocationTable)文件分配表是微软公司在FAT文件系统中为磁盘数据文件索引和定位而引进的一种链式结构,FAT文件系统因其读写速度较高,在许多嵌入式系统中得到广泛的应用。嵌入式系统针对各种应用及其需要实现的功能,对硬件和软件进行了严格的裁剪。目前随着应用的日益复杂,对嵌入式系统的实时性需求越来越高,需要快速及时地访问存储单元,其中涉及到查找空闲簇的步骤。传统技术中查找空闲簇时,一般需要读取FAT文件分配表,从起始扇区开始逐一读取扇区,进行空闲簇的查找,耗费大量时间。当磁盘中存在大量碎片时,查找空闲簇耗费的时间将更加多,因此目前在FAT文件系统中查找空闲簇的效率低下。
技术实现思路
基于此,有必要针对目前在FAT文件系统中查找空闲簇的效率低下的问题,提供一种基于FAT文件系统的查找空闲簇的方法和系统。一种基于FAT文件系统的查找空闲簇的方法,包括以下步骤:获取FAT文件分配表的映射表;其中,映射表存储FAT文件分配表所占用的各个扇区的空闲簇记录状态数据;根据映射表获取FAT文件分配表所占用的存在空闲簇记录的扇区;在存在空闲簇记录的扇区中查找空闲簇项,根据空闲簇项计算空闲簇的位置。一种基于FAT文件系统的查找空闲簇的系统,包括以下模块:映射表获取模块,用于获取FAT文件分配表的映射表;其中,映射表存储FAT文件分配表所占用的各个扇区的空闲簇记录状态数据;扇区获取模块,用于根据映射表获取FAT文件分配表所占用的存在空闲簇记录的扇区;空闲簇计算模块,用于在存在空闲簇记录的扇区中查找空闲簇项,根据空闲簇项计算空闲簇的位置。根据上述的基于FAT文件系统的查找空闲簇的方法和系统,通过获取FAT文件分配表的映射表;根据映射表获取FAT文件分配表所占用的存在空闲簇记录的扇区;在存在空闲簇记录的扇区中查找空闲簇项,根据空闲簇项计算空闲簇的位置。在本方案中,通过映射表可以直接找到FAT文件分配表中存在空闲簇记录的扇区,避免从FAT文件分配表的起始扇区开始逐一查找,节省空闲簇的查找时间,提高了空闲簇的查找效率。一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述基于FAT文件系统的查找空闲簇的方法的步骤。一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述基于FAT文件系统的查找空闲簇的方法的步骤。根据上述本专利技术基于FAT文件系统的查找空闲簇的方法,本专利技术还提供一种可读存储介质和计算机设备,用于通过程序实现上述基于FAT文件系统的查找空闲簇的方法。附图说明图1为本专利技术一个实施例中的基于FAT文件系统的查找空闲簇的方法的流程示意图;图2为本专利技术一个实施例中的基于FAT文件系统的查找空闲簇的系统的结构示意图;图3为本专利技术一个实施例中的基于FAT文件系统的查找空闲簇的系统的结构示意图;图4为本专利技术一个实施例中的基于FAT文件系统的查找空闲簇的系统的结构示意图;图5为本专利技术一个具体实施例中的基于FAT文件系统的查找空闲簇的方法的流程示意图;图6为本专利技术一个具体实施例中的空闲簇项为FAT文件分配表所占用的扇区的最后一簇的示意图。具体实施方式为使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本专利技术,并不限定本专利技术的保护范围。参见图1所示,为本专利技术一个实施例的基于FAT文件系统的查找空闲簇的方法的流程示意图。该实施例中的基于FAT文件系统的查找空闲簇的方法包括以下步骤:步骤S110:获取FAT文件分配表的映射表;其中,映射表存储FAT文件分配表所占用的各个扇区的空闲簇记录状态数据;FAT文件分配表是FAT文件系统用来给每个文件分配磁盘物理空间的表格,记录有每个文件在磁盘物理空间中的地址。FAT文件系统的存储空间以簇划分,每个簇可包括多个扇区,FAT文件分配表和映射表本身也占用一定扇区,FAT文件分配表所占用的扇区中每项对应FAT文件系统存储空间的一个簇,FAT文件分配表的每项记录了对应的簇是否为被占用、空闲或者已损坏,而映射表则存储FAT文件分配表各个扇区是否有空闲簇项;步骤S120:根据映射表获取FAT文件分配表所占用的存在空闲簇记录的扇区;步骤S130:在存在空闲簇记录的扇区中查找空闲簇项,根据空闲簇项计算空闲簇的位置。在本实施例中,通过映射表可以直接找到FAT文件分配表中存在空闲簇记录的扇区,避免从FAT文件分配表的起始扇区开始逐一查找,节省空闲簇的查找时间,提高了空闲簇的查找效率。在其中一个实施例中,获取FAT文件分配表的映射表的步骤包括以下步骤:创建空白映射表;依次读取FAT文件分配表所占用的所有扇区;每读取一个扇区,在当前读取扇区中查找空闲簇记录;在查找到空闲簇记录时,在空白映射表中对应当前读取扇区的比特位置为第一数值;在读取完FAT文件分配表所占用的所有扇区后,获得FAT文件分配表的映射表。在本实施例中,通过创建空白映射表,根据FAT文件分配表所占用的各个扇区的空闲簇记录情况,可以获得FAT文件分配表的映射表,下次需要查找空闲簇时,可以根据FAT文件分配表的映射,直接找到FAT文件分配表中存在空闲簇记录的扇区,无需对FAT的各个扇区逐一进行空闲簇的查找,提高了空闲簇的查找效率。可选的,在查找到空闲簇记录时,在空白映射表中对应当前读取扇区的比特位置为“1”,以表示当前读取的扇区存在空闲簇记录。在其中一个实施例中,在当前读取扇区中查找空闲簇记录的步骤之后还包括以下步骤:在未查找到空闲簇记录时,对创建的空白映射表中对应当前读取扇区的比特位置为第二数值。在本实施例中,若当前读取的FAT文件分配表的扇区中未查找到空闲簇记录时,将空白映射表中的对应的比特位置为第二数值,因此可以在根据映射表查找FAT文件分配表时,无需读取映射表中被置为第二数值的比特位所对应的FAT文件分配表的扇区,节省空闲簇的查找时间,提高空闲簇的查找效率。可选的,在未查找到空闲簇记录时,对创建的空白映射表中对应当前读取扇区的比特位置为“0”,以表示当前读取的扇区不存在空闲簇记录。在其中一个实施例中,在存在空闲簇记录的扇区中查找空闲簇项的步骤之后还包括以下步骤:在查找到空闲簇记录并且空闲簇项为当前读取扇区的最后一簇时,将映射表中对应的比特位置为第二数值。在本实施例中,若空闲簇为FAT文件分配表的当前读取扇区的最后一簇,由于对找到的空闲簇需要进行数据写入操作,此时FAT文件分配表的当前读取扇区不再存在空闲簇记录,因此将映射表中对应的比特位置为第二数值,可以提高映射表的准确性,提高查找空闲簇的效率。可选的,在查找到空闲簇记录并且空闲簇为当前读取扇区的最后一簇时,将映射表中对应的比特位置为“0”,以表示当前读取的扇区不存在空闲簇记录。在其中一个实施例中,根据映射表获取FAT文件分配表所占用的存在空闲簇记录的扇区的步骤包括以下步骤:确定映射表中被置为第一数值的比特位所在的当前字节;获取当前字节所处扇区的偏移值、当前字节在映射表中的偏移值、当本文档来自技高网...
基于FAT文件系统的查找空闲簇的方法和系统

【技术保护点】
一种基于FAT文件系统的查找空闲簇的方法,其特征在于,包括以下步骤:获取FAT文件分配表的映射表;其中,所述映射表存储所述FAT文件分配表所占用的各个扇区的空闲簇记录状态数据;根据所述映射表获取所述FAT文件分配表所占用的存在空闲簇记录的扇区;在所述存在空闲簇记录的扇区中查找空闲簇项,根据所述空闲簇项计算所述空闲簇的位置。

【技术特征摘要】
1.一种基于FAT文件系统的查找空闲簇的方法,其特征在于,包括以下步骤:获取FAT文件分配表的映射表;其中,所述映射表存储所述FAT文件分配表所占用的各个扇区的空闲簇记录状态数据;根据所述映射表获取所述FAT文件分配表所占用的存在空闲簇记录的扇区;在所述存在空闲簇记录的扇区中查找空闲簇项,根据所述空闲簇项计算所述空闲簇的位置。2.根据权利要求1所述的基于FAT文件系统的查找空闲簇的方法,其特征在于,所述获取FAT文件分配表的映射表的步骤包括以下步骤:创建空白映射表;依次读取FAT文件分配表所占用的所有扇区;每读取一个扇区,在当前读取扇区中查找空闲簇记录;在查找到空闲簇记录时,在所述空白映射表中对应当前读取扇区的比特位置为第一数值;在读取完FAT文件分配表所占用的所有扇区后,获得所述FAT文件分配表的映射表。3.根据权利要求2所述的基于FAT文件系统的查找空闲簇的方法,其特征在于,所述在当前读取扇区中查找空闲簇记录的步骤之后还包括以下步骤:在未查找到空闲簇记录时,对创建的空白映射表中对应当前读取扇区的比特位置为第二数值。4.根据权利要求3所述的基于FAT文件系统的查找空闲簇的方法,其特征在于,所述在当前读取扇区中查找空闲簇记录的步骤之后还包括以下步骤:当所述被置为第一数值的比特位与被置为第二数值的比特位的位数之和达到写入阈值时,将已置位的比特位写入存储单元。5.根据权利要求4所述的基于FAT文件系统的查找空闲簇的方法,其特征在于,所述将已置位的比特位写入存储单元的步骤包括以下步骤:计算所述已置位的比特位的CRC值;将所述已置位的比特位的CRC值以及所述已置位的比特位写入存储单元。6.根据权利要求1所述的基于FAT文件系统的查找空闲簇的方法,其特征在于,所述在所述存在空闲簇记录的扇区中查找空闲簇项的步骤之后还包括以下步骤:在查找到空闲簇记录并且所述空闲簇项为当前读取扇区的最后一簇时,将所述映射表中对应的比特位置为第二数值。7.根据权利要求3所述的基于FAT文件系统的查找空闲簇的方法,其特征在于,所述根据所述映射表获取所述FAT文件分配表所占用的存在空闲簇记录的扇区的步骤包括以下步骤:确定所述映射表中被置为第一数值的比特位所在的当前字节;获取当前字节所处扇区的偏移值、当前字节在所处扇区中的偏移值、当前字节中第一个被置为第一数值的比特位的偏移值和单位扇区的字节数;根据所述当前字节所处扇区的偏移值、当前字节的偏移值、当前字节中第一个被置为第一数值的比特位的偏移值和单位扇区的字节数,计算所述FAT文件分配表所占用的存在空闲簇记录的扇区的偏移值;根据所述FAT文件分配表所占用的存在空闲簇记录的扇区的偏移值读取所述FAT文件分配表所占用的存在空闲簇记录的扇区。8.根据权利要求7所述的基于FAT文件系统的查找空闲簇的方法,其特征在于,所述根据所述存在空闲簇记录的扇区中空闲簇的簇项计算所述空闲簇的位置的步骤包括以下步骤:获取所述FAT文件分配表所占用的存在空闲簇记录的扇区中空闲簇项的偏移值;根据所述空闲簇项的偏移值、存在空闲簇记录的扇区的偏移值、单位扇区的字节数和单位簇的字节数,计算出空闲簇的地址。9.根据权利要求1所述的基于FAT文件系统的查找空闲簇的方法,其特征在于,所述获取FAT文件...

【专利技术属性】
技术研发人员:陈日新
申请(专利权)人:珠海市杰理科技股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1