一种文件系统的掉电保护方法及装置转让专利

申请号 : CN201711077928.X

文献号 : CN107992763B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 叶俊

申请人 : 北京东土科技股份有限公司北京科银京成技术有限公司

摘要 :

本申请实施例中公开了一种文件系统的掉电保护方法及装置,该方法为基于预设的文件与起始簇之间的关联关系,确定目标文件对应的起始簇;基于设置的FAT和起始簇,获得目标文件对应的包含第一文件结束簇的第一簇链;将选取的空闲簇与第二文件结束簇进行链接后,添加到删除第一文件结束簇的第一簇链中,获得第二簇链;将目标文件的数据写入到第二簇链包含的各个数据簇中,确定目标文件的数据全部写入时,将目标文件对应的属性信息进行更新。这样,避免了在修改FAT表时,由于掉电后没有文件结束簇造成的访问越界的问题,以及避免了在修改文件的属性信息时掉电后造成的访问越界问题。

权利要求 :

1.一种文件系统的掉电保护方法,其特征在于,应用于对文件进行扩展时,包括:基于预设的文件与起始簇之间的关联关系,确定目标文件对应的起始簇;

基于设置的文件分配表FAT和所述起始簇,获得所述目标文件对应的包含第一文件结束簇的第一簇链;

将选取的空闲簇与第二文件结束簇进行链接后,添加到删除所述第一文件结束簇的第一簇链中,获得第二簇链;

将目标文件的数据写入到所述第二簇链包含的各个数据簇中,确定所述目标文件的数据全部写入时,将所述目标文件对应的属性信息进行更新;

其中,在将选取的空闲簇与第二文件结束簇进行链接后,并在获得第二簇链之前,进一步包括:确定与所述第二文件结束簇相链接的空闲簇,与所述第二文件结束簇不在同一个扇区时,将空闲簇与所述第二文件结束簇之间的链接信息同步到存储设备中。

2.如权利要求1所述的方法,其特征在于,将选取的空闲簇与第二文件结束簇进行链接,具体包括:基于所述目标文件的文件大小,确定选取的空闲簇的数目;

按照选取的空闲簇的数目,将选取的各个空闲簇进行链接,并将链接的各个空闲簇中的最后一个空闲簇,与选取的第二文件结束簇进行链接。

3.如权利要求1或2所述的方法,其特征在于,在将目标文件的数据写入到所述第二簇链包含的各个数据簇中之后,并在确定所述目标文件的数据全部写入之前,进一步包括:确定所述第二簇链中的数据簇均写入数据后,若所述目标文件中存在数据未写入数据簇中,则基于未写入的数据的文件大小,再次选取相应数量的空闲簇;

将重新选取的空闲簇与第三文件结束簇建立链接后,添加到删除所述第二文件结束簇的第二簇链中,获得第三簇链;

将未写入数据簇的数据,写入到所述第三簇链中。

4.一种文件系统的掉电保护方法,其特征在于,应用于对文件进行缩小时,包括:基于获取的目标文件的文件大小,将所述目标文件对应的属性信息进行更新;

基于预设的文件与起始簇之间的关联关系,确定所述目标文件对应的起始簇;

基于设置的文件分配表FAT和所述起始簇,获得所述目标文件对应的包含第一文件结束簇的第一簇链;

基于所述文件大小,确定需要删除的数据簇的数目,并将断开与所述第一文件结束簇和所述数目的数据簇的第一簇链,与设置的第二文件结束簇建立链接,获得第二簇链;

将所述目标文件的数据写入所述第二簇链包含的各个数据簇中,并将与所述第一簇链断开的所述数目的数据簇进行资源释放,获得空闲簇。

5.一种文件系统的掉电保护装置,其特征在于,应用于对文件进行扩展时,包括:确定单元,用于基于预设的文件与起始簇之间的关联关系,确定目标文件对应的起始簇;

获得单元,用于基于设置的文件分配表FAT和所述起始簇,确定所述目标文件对应的包含第一文件结束簇的第一簇链;

链接单元,用于将选取的空闲簇与第二文件结束簇进行链接后,添加到删除所述第一文件结束簇的第一簇链中,获得第二簇链;

写入单元,用于将目标文件的数据写入到所述第二簇链包含的各个数据簇中,确定所述目标文件的数据全部写入时,将所述目标文件对应的属性信息进行更新;

所述链接单元,还用于在将选取的空闲簇与第二文件结束簇进行链接后,并在获得第二簇链之前,确定与所述第二文件结束簇相链接的空闲簇,与所述第二文件结束簇不在同一个扇区时,将空闲簇与所述第二文件结束簇之间的链接信息同步到存储设备中。

6.如权利要求5所述的装置,其特征在于,在将选取的空闲簇与第二文件结束簇进行链接时,所述链接单元具体用于:基于所述目标文件的文件大小,确定选取的空闲簇的数目;

按照选取的空闲簇的数目,将选取的各个空闲簇进行链接,并将链接的各个空闲簇中的最后一个空闲簇,与选取的第二文件结束簇进行链接。

7.如权利要求5或6所述的装置,其特征在于,在将目标文件的数据写入到所述第二簇链包含的各个数据簇中之后,并在确定所述目标文件的数据全部写入之前,所述写入单元还用于:确定所述第二簇链中的数据簇均写入数据后,若所述目标文件中存在数据未写入数据簇中,则基于未写入的数据的文件大小,再次选取相应数量的空闲簇;

将重新选取的空闲簇与第三文件结束簇建立链接后,添加到删除所述第二文件结束簇的第二簇链中,获得第三簇链;

将未写入数据簇的数据,写入到所述第三簇链中。

8.一种文件系统的掉电保护装置,其特征在于,应用于对文件进行缩小时,包括:更新单元,用于基于获取的目标文件的文件大小,将所述目标文件对应的属性信息进行更新;

确定单元,用于基于预设的文件与起始簇之间的关联关系,确定所述目标文件对应的起始簇;

获得单元,用于基于设置的文件分配表FAT和所述起始簇,获得所述目标文件对应的包含第一文件结束簇的第一簇链;

链接单元,用于基于所述文件大小,确定需要删除的数据簇的数目,并将断开与所述第一文件结束簇和所述数目的数据簇的第一簇链,与设置的第二文件结束簇建立链接,获得第二簇链;

写入单元,用于将所述目标文件的数据写入所述第二簇链包含的各个数据簇中,并将与所述第一簇链断开的所述数目的数据簇进行资源释放,获得空闲簇。

9.一种电子设备,其特征在于,包括:一个或多个处理器;以及一个或多个计算机可读介质,可读介质上存储有用于文件系统的掉电保护程序,其中,程序被一个或多个处理器执行时,实现如权利要求1~3或权利要求4中任意一项的方法的步骤。

10.一个或多个计算机可读介质,其特征在于,可读介质上存储有用于文件系统的掉电保护程序,其中,程序被一个或多个处理器执行时,使得通信设备执行如权利要求1~3或权利要求4中任一项的方法。

说明书 :

一种文件系统的掉电保护方法及装置

技术领域

[0001] 本申请涉及计算机技术领域,尤其涉及一种文件系统的掉电保护方法及装置。

背景技术

[0002] 在Dos/Windows系列操作系统中通常采用文件分配表(File Allocation Table,FAT)文件系统对文件进行管理和操作。其中,所谓FAT文件系统包括目录项集合、FAT表和存储设备。主要工作原理为:首先,通过目录项集合,获取文件对应的起始簇;然后,通过FAT表中记录的各个簇之间的链接关系,确定上述起始簇对应的文件结束簇,进而获取包含起始簇、用于存储数据的数据簇,以及文件结束簇的簇链;进一步地,在存储设备中,对簇链中包含的各个簇进行访问,实现对文件扩展或缩小等操作。其中,簇为数据在存储设备(如,硬盘)中存储的最小单位。
[0003] 用户对文件进行的操作主要分为文件扩展操作和文件缩小操作(如,删除文件或删除文件的部分内容)。
[0004] 一方面,现有技术下,FAT系统对文件进行扩展时,通常采用以下方式:
[0005] 首先,在FAT表中,对记录的文件对应的簇链进行调整,即在FAT表中,将文件对应的簇链的原文件结束簇删除,并将用于写入数据的空闲簇添加到上述簇链中,以及将上述空闲簇与一个新的文件结束簇建立链接,其中,所谓链接是指在FAT表中将一个簇的标号添加到另一个簇的标号对应的表项中,作为上述另一个簇指向的下一个簇,从而形成具有方向的簇链;其次,在存储设备中,将上述文件的数据写入上述调整后的簇链,即数据同步;进一步地,将目录项集合中记录的文件的修改时间和大小等属性数据进行相应的更新;最后,在存储设备中,再次对文件的数据进行同步检查,以防止文件的数据没有完全同步完成。
[0006] 但是,采用这种方式,首先,若FAT系统在删除原文件结束簇之后,并在链接空闲簇与文件结束簇之前掉电,则由于文件对应的簇链没有文件结束簇,因此,造成访问越界的问题,如,可能会访问到系统数据,导致文件系统崩溃;其次,若在对目录项集合进行同步之后,并在对存储设备再次进行数据同步之前掉电,则由于文件的数据存在没有同步完全的问题,因此,可能在后续用户通过目录项信息访问时,获得不正确的数据。
[0007] 另一方面,现有技术下,FAT系统对文件进行缩小时,通常采用以下方式:
[0008] 首先,在FAT表中,将记录的文件对应的簇链进行调整,即在FAT表中将由于文件缩小造成的多余的簇和原文件结束簇进行删除,并调整后的簇链,与新的文件结束簇建立链接,然后,对在目录项集合中对文件的属性信息进行更新。
[0009] 但是,采用这种方式,首先,若FAT系统在删除原文件结束簇之后,并在簇链与新的文件结束簇之间建立链接之前掉电,则也会出现由于簇链没有文件结束簇造成用户访问越界的问题;其次,若在修改FAT表后,并在对目录项集合更新之前掉电,则由于在目录项集合中还没有对文件的属性信息进行相应的更新,因此,在目录项集合中记录的文件的文件大小比FAT表中记录的实际的存储空间大,同样会造成用户访问存储设备的范围越界的问题。

发明内容

[0010] 本申请实施例提供一种文件系统的掉电保护方法及装置,用于在进行文件扩展或者文件缩小的过程中出现掉电的状况时,对文件进行安全防护,从而在后续访问时,提高了访问的文件数据的准确性,避免了访问范围越界的问题。
[0011] 本申请实施例提供的具体技术方案如下:
[0012] 第一方面,一种文件系统的掉电保护方法,应用于对文件进行扩展时,包括:
[0013] 基于预设的文件与起始簇之间的关联关系,确定目标文件对应的起始簇;
[0014] 基于设置的FAT和起始簇,获得目标文件对应的包含第一文件结束簇的第一簇链;
[0015] 将选取的空闲簇与第二文件结束簇进行链接后,添加到删除第一文件结束簇的第一簇链中,获得第二簇链;
[0016] 将目标文件的数据写入到第二簇链包含的各个数据簇中,确定目标文件的数据全部写入时,将目标文件对应的属性信息进行更新。
[0017] 较佳的,将选取的空闲簇与第二文件结束簇进行链接,具体包括:
[0018] 基于目标文件的文件大小,确定选取的空闲簇的数目;
[0019] 按照选取的空闲簇的数目,将选取的各个空闲簇进行链接,并将链接的各个空闲簇中的最后一个空闲簇,与选取的第二文件结束簇进行链接。
[0020] 较佳的,在将选取的空闲簇与第二文件结束簇进行链接后,并在获得第二簇链之前,进一步包括:
[0021] 确定与第二文件结束簇相链接的空闲簇,与第二文件结束簇不在同一个扇区时,将空闲簇与第二文件结束簇之间的链接信息同步到存储设备中。
[0022] 较佳的,在将目标文件的数据写入到第二簇链包含的各个数据簇中之后,并在确定目标文件的数据全部写入之前,进一步包括:
[0023] 确定第二簇链中的数据簇均写入数据后,若目标文件中存在数据未写入数据簇中,则基于未写入的数据的文件大小,再次选取相应数量的空闲簇;
[0024] 将重新选取的空闲簇与第三文件结束簇建立链接后,添加到删除第二文件结束簇的第二簇链中,获得第三簇链;
[0025] 将未写入数据簇的数据,写入到第三簇链中。
[0026] 第二方面,一种文件系统的掉电保护装置,应用于对文件进行扩展时,包括:
[0027] 确定单元,用于基于预设的文件与起始簇之间的关联关系,确定目标文件对应的起始簇;
[0028] 获得单元,用于基于设置的FAT和起始簇,确定目标文件对应的包含第一文件结束簇的第一簇链;
[0029] 链接单元,用于将选取的空闲簇与第二文件结束簇进行链接后,添加到删除第一文件结束簇的第一簇链中,获得第二簇链;
[0030] 写入单元,用于将目标文件的数据写入到第二簇链包含的各个数据簇中,确定目标文件的数据全部写入时,将目标文件对应的属性信息进行更新。
[0031] 较佳的,在将选取的空闲簇与第二文件结束簇进行链接时,链接单元具体用于:
[0032] 基于目标文件的文件大小,确定选取的空闲簇的数目;
[0033] 按照选取的空闲簇的数目,将选取的各个空闲簇进行链接,并将链接的各个空闲簇中的最后一个空闲簇,与选取的第二文件结束簇进行链接。
[0034] 较佳的,在将选取的空闲簇与第二文件结束簇进行链接后,并在获得第二簇链之前,链接单元还用于:
[0035] 确定与第二文件结束簇相链接的空闲簇,与第二文件结束簇不在同一个扇区时,将空闲簇与第二文件结束簇之间的链接信息同步到存储设备中。
[0036] 较佳的,在将目标文件的数据写入到第二簇链包含的各个数据簇中之后,并在确定目标文件的数据全部写入之前,写入单元还用于:
[0037] 确定第二簇链中的数据簇均写入数据后,若目标文件中存在数据未写入数据簇中,则基于未写入的数据的文件大小,再次选取相应数量的空闲簇;
[0038] 将重新选取的空闲簇与第三文件结束簇建立链接后,添加到删除第二文件结束簇的第二簇链中,获得第三簇链;
[0039] 将未写入数据簇的数据,写入到第三簇链中。
[0040] 第三方面,一种文件系统的掉电保护方法,应用于对文件进行缩小时,包括:
[0041] 基于获取的目标文件的文件大小,将目标文件对应的属性信息进行更新;
[0042] 基于预设的文件与起始簇之间的关联关系,确定目标文件对应的起始簇;
[0043] 基于设置的FAT和起始簇,获得目标文件对应的包含第一文件结束簇的第一簇链;
[0044] 基于文件大小,确定需要删除的数据簇的数目,并将断开与第一文件结束簇和数目的数据簇的第一簇链,与设置的第二文件结束簇建立链接,获得第二簇链;
[0045] 将目标文件的数据写入第二簇链包含的各个数据簇中,并将与第一簇链断开的数目的数据簇进行资源释放,获得空闲簇。
[0046] 第四方面,一种文件系统的掉电保护装置,应用于对文件进行缩小时,包括:
[0047] 更新单元,用于基于获取的目标文件的文件大小,将目标文件对应的属性信息进行更新;
[0048] 确定单元,用于基于预设的文件与起始簇之间的关联关系,确定目标文件对应的起始簇;
[0049] 获得单元,用于基于设置的FAT和起始簇,获得目标文件对应的包含第一文件结束簇的第一簇链;
[0050] 链接单元,用于基于文件大小,确定需要删除的数据簇的数目,并将断开与第一文件结束簇和数目的数据簇的第一簇链,与设置的第二文件结束簇建立链接,获得第二簇链;
[0051] 写入单元,用于将目标文件的数据写入第二簇链包含的各个数据簇中,并将与第一簇链断开的数目的数据簇进行资源释放,获得空闲簇。
[0052] 第五方面,一种电子设备,包括:一个或多个处理器;以及
[0053] 一个或多个计算机可读介质,可读介质上存储有用于文件系统的掉电保护程序,其中,程序被一个或多个处理器执行时,实现上述第一方面或第三方面中任一项的方法的步骤。
[0054] 第六方面,一个或多个计算机可读介质,可读介质上存储有用于文件系统的掉电保护程序,其中,程序被一个或多个处理器执行时,使得通信设备执行上述第一方面或第三方面中任一项的方法。
[0055] 本申请实施例中,在进行文件扩展时,先将选取的空闲簇与第二文件结束簇进行链接,然后,将链接后的空闲簇和第二文件结束簇添加到目标文件对应的第一簇链中,获得第二簇链,进一步地,确定目标文件的数据全部写入到第二簇链中的数据簇后,再对目标文件的属性信息进行更新,以及在进行文件缩小时,先对目标文件的属性信息进行更新,然后,将第一簇链与需要删除的数据簇以及第一文件结束簇断开,以及将第二文件结束簇添加到调整后的第一簇链中,获得第二簇链,最后将目标文件的数据写入第二簇链中,并将删除的数据簇进行资源释放。这样,保证了簇链中始终存在文件结束簇,避免了在修改FAT表时,由于掉电后没有文件结束簇造成的访问越界的问题,以及保证了属性信息中包含的文件的大小始终不大于文件的实际文件大小,提高了后续文件访问时,获取的文件数据的准确性,也避免了在修改文件的属性信息时掉电后造成的访问越界问题。

附图说明

[0056] 图1为本申请实施例中对文件进行扩展时的掉电保护方法的流程图;
[0057] 图2为本申请实施例中对文件进行缩小时的掉电保护方法的流程图;
[0058] 图3为本申请实施例中对文件进行扩展时的掉电保护装置的结构示意图;
[0059] 图4为本申请实施例中对文件进行缩小时的掉电保护装置的结构示意图。

具体实施方式

[0060] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0061] 为了在进行文件扩展或者文件缩小的过程中出现掉电的状况时,对文件进行安全防护,从而在后续访问时,提高访问的文件数据的准确性,避免访问范围越界的问题,本申请实施例中,设计了一种文件系统的掉电保护方法,该方法为在进行文件扩展时,先将选取的空闲簇与第二文件结束簇进行链接,然后,将链接后的空闲簇和第二文件结束簇添加到目标文件对应的第一簇链中,获得第二簇链,进一步地,确定目标文件的数据写入到第二簇链中的数据簇后,再对目标文件的属性信息进行更新,以及在进行文件缩小时,先对目标文件的属性信息进行更新,然后,将第一簇链与需要删除的数据簇以及第一文件结束簇断开,并将第二文件结束簇添加到调整后的第一簇链中,获得第二簇链,最后将目标文件的数据写入第二簇链中的各个簇中,并将删除的数据簇进行资源释放。
[0062] 以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0063] 针对文件扩展和文件缩小两个应用场景,本申请实施例中,分别采用两个相应的实施例进行说明,其中,FAT系统为应用于计算机,智能终端等终端中的软件系统。
[0064] 参阅图1所示,对文件进行扩展时的掉电保护流程图,本申请实施例中,在对文件进行扩展时,对文件系统的掉电保护具体流程如下:
[0065] 步骤100:终端接收对目标文件进行扩展的文件扩展指令,确定对目标文件进行扩展时,基于预设的文件与起始簇之间的关联关系,确定目标文件对应的起始簇。
[0066] 具体的,执行步骤100时,终端可以为采用FAT文件系统的计算机等设备。其中,FAT文件系统中的目录项集合中记录有文件与起始簇之间的关联关系,以及文件大小和修改时间等属性信息,并且目录项集合中记录的文件为文件名,记录的起始簇为簇的标号。簇为存储设备(如,硬盘)中存储数据的最小单位,任意一个文件至少需要占用一个簇进行数据存储。
[0067] 这样,终端可以通过目录项集合,确定目标文件对应的起始簇。
[0068] 例如,目标文件为音频文件A,则终端在目录项集合中,确定音频文件A对应的起始簇为簇27。
[0069] 步骤101:终端基于FAT表和起始簇,获得目标文件对应的第一簇链。
[0070] 具体的,首先,终端在FAT表中,确定起始簇对应的第一文件结束簇。
[0071] 其中,在FAT表中记录有各个簇的标号,并且记录有每一个簇的下一个簇的标号,从而实现将各个簇之间建立链接,组成簇链。通常以0x7FFFFFFF~0xFFFFFFFF为文件结束标记,即一个簇中若包含0x7FFFFFFF~0xFFFFFFFF之间的任意一个值,都表征该簇为文件结束簇。
[0072] 这样,终端可以通过依次寻找每一个簇的下一个簇,确定与起始簇相链接的簇,从而依次查找,直到确定包含文件结束标识如“EOF”的文件结束簇。
[0073] 然后,终端基于起始簇和第一文件结束簇,以及起始簇与第一文件结束簇之间链接的各个数据簇,获得目标文件的第一簇链。
[0074] 其中,一个文件对应的簇链包括起始簇,用于存储数据的数据簇以及文件结束簇。
[0075] 例如,在FAT表中,视频文件B的起始簇的标号为簇27,对应的下一个簇的标号的簇30,簇30对应的下一个簇的标号的簇31,簇31对应的下一个标号为簇40,簇40为第一文件结束簇。则终端获得包含簇27,簇30,簇31和簇40的第一簇链,即视频文件B对应的第一簇链。
[0076] 步骤102:终端基于获取的目标文件的文件大小,确定需要添加的空闲簇的数目,并将选取的上述数目的空闲簇与第二文件结束簇建立链接。
[0077] 具体的,首先,由于需要对目标文件进行扩展,第一簇链中包含的簇无法存储目标文件中的所有内容,因此,终端根据目标文件的文件大小,以及第一簇链中包含的数据簇的数目,确定需要增加的空闲簇的数目。
[0078] 然后,终端将上述数目的空闲簇以及选取的第二文件结束簇建立链接,即在FAT表中,添加各个空闲簇和第二文件结束簇的标号,并且最后一个空闲簇的标号对应的下一个簇为第二文件结束簇的标号。
[0079] 其中,第一文件结束簇与第二文件结束簇可以为同一个簇,也可以为不同的簇。
[0080] 进一步地,若与第二文件结束簇链接的空闲簇,与第二文件结束簇不在同一个扇区,则将该空闲簇的标号以及第二文件结束簇的标号同步到存储设备中。
[0081] 其中,FAT表包括内存FAT表和存储设备FAT表,内存FAT表存储在内存中,存储设备FAT表存储在存储设备中。终端将空闲簇与第二文件结束簇建立链接是将空闲簇和第二文件结束簇的标号同时写入内存FAT表中,然后,终端会将该链接信息写入存储设备FAT表中,以便后续进行访问。
[0082] 终端将空闲簇与第二文件结束簇的标号写入内存FAT表后,若空闲簇与第二文件结束簇不在同一个扇区,并且在该链接信息完全写入存储设备FAT表之前掉电,则可能会出现由于文件结束簇丢失,造成的访问越界的问题。
[0083] 这是因为:若终端仅将空闲簇的标号写入存储设备FAT表中,而未将第二文件结束簇写入存储设备FAT表中,则后续访问时,由于没有文件结束簇造成访问越界的问题;若终端仅将第二文件结束簇的标号写入存储设备FAT表中,而未将空闲簇的标号写入存储设备FAT表中,则由于文件结束簇是通过空闲簇与簇链链接的,因此,后续访问时,也存在由于没有文件结束簇造成的访问越界的问题;若空闲簇和第二文件结束簇的标号均没有写入存储设备FAT表中,则后续访问时,按照存储设备FAT表中记录的原始链接信息,不会出现由于没有结束簇造成的访问越界问题。
[0084] 这样,就可以先将各个空闲簇与第二文件结束簇建立链接,在这个过程中,即便出现掉电的状况,由于目标文件对应的第一簇链中包含第一文件结束簇,因此,用户后续进行访问时,不会出现访问越界的问题。
[0085] 步骤103:终端将建立链接后的空闲簇和第二文件结束簇,添加到删除第一文件结束簇的第一簇链中,获得第二簇链。
[0086] 具体的,终端根据FAT表,获得第一簇链中与第一文件结束簇相链接的数据簇,并将该数据簇对应的下一个簇修改为空闲簇。
[0087] 例如,第一簇链为:起始簇12,数据簇13,数据簇14,数据簇15以及第一文件结束簇16。空闲簇与第二文件结束簇建立的链接为:空闲簇17,空闲簇18以及第二文件结束簇19。
则终端在FAT表中,将数据簇15对应的下一个簇的标号,修改为空闲簇17,获得第二簇链,即起始簇12,数据簇13,数据簇14,数据簇15,空闲簇17,空闲簇18以及第二文件结束簇19。
[0088] 这样,就可以保证在调整FAT表的过程中,使目标文件对应的簇链即第一簇链或第二簇链中始终包含文件结束簇,避免了由于突然掉电,没有文件结束簇造成的访问越界的问题。
[0089] 步骤104:终端将目标文件的数据写入到第二簇链中的各个数据簇中。
[0090] 具体的,FAT表中记录的仅为各个簇的标号,存储设备则划分为各个簇,通过簇的标号,可以在存储设备中获得簇的标号对应的簇,从而将目标文件的数据写入第二簇链中的各个数据簇中。
[0091] 步骤105:终端判断目标文件的数据是否全部写入数据簇中,若是,则执行步骤106,否则,执行步骤102。
[0092] 具体的,若终端确定目标文件的数据已经全部写入到第二簇链包含的数据簇中,则执行步骤106。若终端确定第二簇链包含的数据簇均已写入数据,但是,目标文件仍然存在部分数据未被写入到数据簇中,则执行步骤102。
[0093] 较佳的,由于终端在将目标文件进行同步时,首先会将目标文件的数据写入到缓存中,因此,在进行数据同步之后,终端可以再次检测目标文件是否完全被写入到存储设备中,若否,则将目标文件的数据再次进行同步,以保证数据同步的完整性。
[0094] 这样,就可以在分配的空闲簇不足以存储目标文件的所有数据时,再次为目标文件分配相应的空闲簇,以将目标文件的所有数据均同步到存储设备中,或者,数据写入缓存后但是还没有完全写入存储设备的各个簇中时,再次对数据进行同步,确保文件数据全部写入簇中,从而保证了在后续访问时,可以获得准确的文件的数据。
[0095] 步骤106:终端在目录项集合中,将目标文件对应的属性信息进行更新。
[0096] 具体的,终端获取目标文件的修改时间,文件大小以及存储位置等属性信息,并在目录项集合中,将目标文件对应的属性信息进行更新。
[0097] 这样,就可以在确定目标文件完全写入到存储设备中后,再对目录项集合中记录的属性信息进行更新。若在对目标文件的属性信息进行更新之前,出现掉电状况,则由于目标文件扩展后,目标文件的文件大小大于原属性信息中记录的文件大小,因此,用户在后续的访问过程中,仅能访问原属性信息中记录的文件大小的存储设备,而不会出现访问访问越界的问题,进而提高了访问的文件数据的准确性。
[0098] 参阅图2所示,为对文件进行缩小时的掉电保护方法,本申请实施例中,对文件进行缩小时,文件系统的掉电保护的具体流程如下:
[0099] 步骤200:终端接收对目标文件进行缩小的文件缩小指令,确定对目标文件进行缩小,基于获取的目标文件的文件大小,对目标文件对应的属性信息进行更新。
[0100] 具体的,执行步骤200时,属性信息为目录项集合中记录的文件的文件大小,修改时间以及文件的存储位置等信息。
[0101] 步骤210:终端基于预设的文件与起始簇之间的关联关系,确定目标文件对应的起始簇。
[0102] 具体的,执行步骤210时,文件与起始簇之间的关联关系记录在目录项集合中,在目录项集合中,文件与起始簇一一对应。
[0103] 步骤220:终端基于设置的FAT表和起始簇,确定目标文件对应的包含第一文件结束簇的第一簇链。
[0104] 具体的,执行步骤220时,终端中预先设置有FAT表,FAT表用于记录各个文件的簇链,其中,一个文件的簇链包括起始簇,用于存储数据的数据簇以及用于表征簇链结束的文件结束簇。其中,每一个簇均通过一个标号进行表示,并且在FAT表中记录有各个簇分别对应的下一个簇的标号,这样,就可以通过记录的各个簇的下一个簇,将起始簇、数据簇以及文件结束簇链接起来,形成簇链。
[0105] 步骤230:终端基于目标文件的文件大小,确定第一簇链中需要删除的数据簇的数目和标号。
[0106] 步骤240:终端在第一簇链中按照上述标号删除上述数目的数据簇和第一文件结束簇,并将第二文件结束簇添加到调整后的第一簇链中,获得第二簇链。
[0107] 具体的,执行步骤240时,终端在FAT表中,将去除需要删除的数据簇后的第一簇链的数据簇对应的下一个簇修改为第二文件结束簇。
[0108] 其中,第一文件结束簇和第二文件结束簇可以为同一个簇也可以为不同的簇。
[0109] 例如,第一簇链为:起始簇30,数据簇23,数据簇24,数据簇25,第一结束簇50,终端基于目标文件的大小,确定需要删除数据簇24和数据簇25,第二文件结束簇的标号为第二文件结束簇12,则终端在FAT表中,将数据簇23对应的下一个簇,修改为第二文件结束簇12。
[0110] 步骤250:终端将目标文件的数据写入第二簇链的各个簇中,并将上述各个删除的数据簇进行资源释放。
[0111] 具体的,终端将目标文件的数据写入第二簇链的各个簇中,并将需要删除的各个数据簇进行资源释放,获得各个空闲簇。
[0112] 进一步地,终端基于目标文件的大小,以及第二簇链,判断是否仍有需要删除的数据簇,若是,再次对目标文件执行文件缩小操作。
[0113] 其中,FAT记录的是簇的标号,簇是硬盘中存储数据的最小单位,终端首先为文件分配相应的簇,如新建文件时,直接按照文件的大小分配相应数量的簇,如文件扩展时,在文件对应的簇链增加相应数量的簇,如文件缩小时,在文件对应的簇链中删除相应数量的簇,即在FAT表中记录的簇链的簇的标号进行修改,从而可以按照FAT记录的簇的标号,在存储设备中,将文件的数据写入相应的簇中,或者将需要删除的簇进行资源释放。
[0114] 这样,就可以在对FAT表进行修改之前,先对目标文件的属性信息进行修改,即便在属性信息进行修改后并在FAT表修改之前出现掉电的状况,修改后的实际的文件大小会小于FAT表中记录的文件大小,避免了访问越界的问题,进一步地,先对FAT表中记录的簇链进行修改,然后进行簇的资源释放,即便在FAT表修改后,并在簇进行资源释放之前出现掉电的情况,FAT表中对应的文件大小也会小于实际对应的簇的大小,也避免了出现访问越界的问题,进而提高了文件访问数据的准确性。
[0115] 本申请实施例中,一方面,为保证簇链中始终包含文件结束簇,在对文件进行扩展的掉电保护时,先将需要添加的空闲簇与文件结束簇进行链接后,再添加到原始簇链中;在对文件进行缩小的掉电保护时,先确定需要删除的数据簇,然后,将删除上述数据簇的原始簇链与文件结束簇进行链接。这样,在对文件扩展时,以及对文件缩小时,均先确定需要添加或删除的簇后,再根据确定的簇,将原始簇链与文件结束簇进行链接,从而避免了簇链中不存在文件结束簇的问题。
[0116] 另一方面,为保证属性信息中的文件大小,始终不大于FAT表中记录的存储空间(即,文件对应的簇链)的大小,对文件进行扩展时,先将FAT表中记录的存储空间扩展,然后,将属性信息中的文件大小扩展;对文件进行缩小时,先将属性信息中的文件大小缩小,然后,将FAT表中记录的存储空间缩小。这样,对文件进行扩展时,以及对文件进行缩小时,根据文件大小的变化,调整FAT表和属性信息的修改顺序,从而保证了属性信息中的文件大小,始终不大于FAT表中记录的存储空间的大小。
[0117] 综上所述,对文件进行扩展的掉电保护方法,与对文件进行缩小的掉电保护方法时,均保证了簇链中始终包含文件结束簇以及属性信息中的文件大小始终不大于FAT表中对应的存储空间的大小,并且采用了相应或相同的技术特征,具有单一性。
[0118] 本申请实施例中,一种电子设备,包括:一个或多个处理器;以及[0119] 一个或多个计算机可读介质,可读介质上存储有用于文件系统的掉电保护的程序,其中,程序被一个或多个处理器执行时,实现上述实施例中的各个步骤。
[0120] 本申请实施例中,一个或多个计算机可读介质,可读介质上存储有用于文件系统的掉电保护的程序,其中,程序被一个或多个处理器执行时,使得通信设备可以执行上述实施例中的各个步骤。
[0121] 基于上述实施例,参阅图3所示,对文件进行扩展时的掉电保护装置的结构示意图,本申请实施例中,对文件进行扩展时,文件系统的掉电保护装置具体包括:
[0122] 确定单元30,用于基于预设的文件与起始簇之间的关联关系,确定目标文件对应的起始簇;
[0123] 获得单元31,用于基于设置的FAT和起始簇,确定目标文件对应的包含第一文件结束簇的第一簇链;
[0124] 链接单元32,用于将选取的空闲簇与第二文件结束簇进行链接后,添加到删除第一文件结束簇的第一簇链中,获得第二簇链;
[0125] 写入单元33,用于将目标文件的数据写入到第二簇链包含的各个数据簇中,确定目标文件的数据全部写入时,将目标文件对应的属性信息进行更新。
[0126] 较佳的,在将选取的空闲簇与第二文件结束簇进行链接时,链接单元32具体用于:
[0127] 基于目标文件的文件大小,确定选取的空闲簇的数目;
[0128] 按照选取的空闲簇的数目,将选取的各个空闲簇进行链接,并将链接的各个空闲簇中的最后一个空闲簇,与选取的第二文件结束簇进行链接。
[0129] 较佳的,在将选取的空闲簇与第二文件结束簇进行链接后,并在获得第二簇链之前,链接单元32还用于:
[0130] 确定与第二文件结束簇相链接的空闲簇,与第二文件结束簇不在同一个扇区时,将空闲簇与第二文件结束簇之间的链接信息同步到存储设备中。
[0131] 较佳的,在将目标文件的数据写入到第二簇链包含的各个数据簇中之后,并在确定目标文件的数据全部写入之前,写入单元33还用于:
[0132] 确定第二簇链中的数据簇均写入数据后,若目标文件中存在数据未写入数据簇中,则基于未写入的数据的文件大小,再次选取相应数量的空闲簇;
[0133] 将重新选取的空闲簇与第三文件结束簇建立链接后,添加到删除第二文件结束簇的第二簇链中,获得第三簇链;
[0134] 将未写入数据簇的数据,写入到第三簇链中。
[0135] 基于上述实施例,参阅图4所示,对文件进行缩小时的掉电保护装置的结构示意图,本申请实施例中,对文件进行缩小时,文件系统的掉电保护装置具体包括:
[0136] 更新单元40,用于基于获取的目标文件的文件大小,将目标文件对应的属性信息进行更新;
[0137] 确定单元41,用于基于预设的文件与起始簇之间的关联关系,确定目标文件对应的起始簇;
[0138] 获得单元42,用于基于设置的FAT和起始簇,获得目标文件对应的包含第一文件结束簇的第一簇链;
[0139] 链接单元43,用于基于文件大小,确定需要删除的数据簇的数目,并将断开与第一文件结束簇和数目的数据簇的第一簇链,与设置的第二文件结束簇建立链接,获得第二簇链;
[0140] 写入单元44,用于将目标文件的数据写入第二簇链包含的各个数据簇中,并将与第一簇链断开的数目的数据簇进行资源释放,获得空闲簇。
[0141] 本申请实施例中,在进行文件扩展时,先将选取的空闲簇与第二文件结束簇进行链接,然后,将链接后的空闲簇和第二文件结束簇添加到目标文件对应的第一簇链中,获得第二簇链,进一步地,确定目标文件的数据全部写入到第二簇链中的数据簇后,再对目标文件的属性信息进行更新,以及在进行文件缩小时,先对目标文件的属性信息进行更新,然后,将第一簇链与需要删除的数据簇以及第一文件结束簇断开,以及将第二文件结束簇添加到调整后的第一簇链中,获得第二簇链,最后将目标文件的数据写入第二簇链中,并将删除的数据簇进行资源释放。这样,保证了簇链中始终存在文件结束簇,避免了在修改FAT表时,由于掉电后没有文件结束簇造成的访问越界的问题,以及保证了属性信息中包含的文件的大小始终不大于文件的实际文件大小,提高了后续文件访问时,获取的文件数据的准确性,也避免了在修改文件的属性信息时掉电后造成的访问越界问题。
[0142] 本领域内的技术人员应明白,本申请实施例中的实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例中可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例中可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0143] 本申请实施例中是参照根据本申请实施例中实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0144] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0145] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0146] 尽管已描述了本申请实施例中的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例中范围的所有变更和修改。
[0147] 显然,本领域的技术人员可以对本申请实施例中实施例进行各种改动和变型而不脱离本申请实施例中实施例的精神和范围。这样,倘若本申请实施例中实施例的这些修改和变型属于本申请实施例中权利要求及其等同技术的范围之内,则本申请实施例中也意图包含这些改动和变型在内。