发明内容
本发明的主要目的是提供一种FAT文件系统中被删除文件的恢复方法及装置,使得删除文件的恢复更精确。
本发明解决其技术问题所采用的技术方案是:
一种FAT文件系统中被删除文件的恢复方法,其包括:
在FAT文件系统的目录中读取当前被删除文件的首簇、大小和创建时间;
根据所述文件的大小获取该当前被删除文件的占用簇的个数;
以所述当前被删除文件的首簇为当前簇,在所述FAT文件系统的FAT表中从当前簇开始找下一簇,判断该簇是否为空闲簇,判断该簇是否为别的被删除文件的首簇,判断别的被删除文件的创建时间是否在所述当前被删除文件的创建时间之后;
当所述判断的结果都为是时,以该簇为FAT表中的当前簇,执行所述在所述FAT文件系统的FAT表中从当前簇开始找下一簇的步骤;否则,记录下该簇的位置,并累加查找的簇的个数;
检测所述累加查找到的簇的个数是否等于当前被删除文件的占用簇的个数,当检测结果为否时,以该簇为FAT表中的当前簇,执行所述在所述FAT文件系统的FAT表中从当前簇开始找下一簇的步骤;当检测结果为是时,读取上述记录的簇的内容,并将所述内容重写到其他存储器中。
优选地,
在根据所述文件的大小获取该当前被删除文件的占用簇的个数,之后进一步包括:
判断所述占用簇的个数是否大于1,若不大于1,则读取所述被删除文件的首簇的内容,并将所述内容重写到其他存储器中;若大于1,则执行所述在所述FAT文件系统的FAT表中从当前簇开始找下一簇的步骤。
优选地,所述判断该簇是否为空闲簇,判断该簇是否为别的被删除文件的首簇,判断别的被删除文件的创建时间是否在所述当前被删除文件的创建时间之后的步骤具体包括:
判断该簇是否为空闲簇,当判断结果为是时,判断该簇是否为别的被删除文件的首簇,当判断结果为是时,判断所述别的被删除文件的创建时间是否在所述当前被删除文件的创建时间之后。
优选地,所述判断该簇是否为别的被删除文件的首簇的步骤具体包括:从FAT表中查找该簇是否被别的被删除文件占用过,当查找为是时,则判断出该簇为别的被删除文件的首簇;否则,判断出该簇不为别的被删除文件的首簇。
优选地,当所述判断的结果都为是时,执行所述在所述FAT文件系统的FAT表中从当前簇开始找下一簇的步骤之前还包括:累加查找的簇的个数;
所述检测所述累加查找到的空闲簇的个数是否等于该被删除文件的占用簇的个数的步骤具体包括:
所述检测所述累加查找到的空闲簇的个数是否等于或大于当前被删除文件的占用簇的个数。
一种FAT文件系统中被删除文件的恢复装置,其包括:
信息读取单元,用于在FAT文件系统的目录中读取当前被删除文件的首簇、大小和创建时间;
占用簇数获取单元,用于根据所述文件的大小获取该当前被删除文件的占用簇的个数;
空闲簇查找判断单元,用于以所述当前被删除文件的首簇为当前簇,在所述FAT文件系统的FAT表中从当前簇开始找下一簇,判断该簇是否为空闲簇,判断该簇是否为别的被删除文件的首簇,判断别的被删除文件的创建时间是否在所述当前被删除文件的创建时间之后;
结果执行单元,用于当所述判断的结果都为是时,触发所述空闲簇查找判断单元以该簇为FAT表中的当前簇,执行所述在所述FAT文件系统的FAT表中从当前簇开始找下一簇的步骤;否则,记录下该簇的位置,并累加查找的簇的个数;
内容恢复单元,用于检测所述累加查找到的簇的个数是否等于当前被删除文件的占用簇的个数,当检测结果为否时,触发所述空闲簇查找判断单元以该簇为FAT表中的当前簇,执行所述在所述FAT文件系统的FAT表中从当前簇开始找下一簇的步骤;当检测结果为是时,读取上述记录的簇的内容,并将所述内容重写到其他存储器中。
优选地,所述的装置还包括:
占用簇判断单元,用于在所述占用簇数获取单元根据所述文件的大小获取该当前被删除文件的占用簇的个数之后,判断所述占用簇的个数是否大于1,若不大于1,则读取所述被删除文件的首簇的内容,并将所述内容重写到其他存储器中;若大于1,则触发所述空闲簇查找判断单元执行操作。
优选地,所述空闲簇查找判断单元,具体用于判断该簇是否为空闲簇,当判断结果为是时,判断该簇是否为别的被删除文件的首簇,当判断结果为是时,判断所述别的被删除文件的创建时间是否在所述当前被删除文件的创建时间之后。
优选地,所述空闲簇查找判断单元,具体用于:从FAT表中查找该簇是否被别的被删除文件占用过,当查找为是时,则判断出该簇为别的被删除文件的首簇;否则,判断出该簇不为别的被删除文件的首簇。
优选地,所述结果执行单元,还用于在所述空闲簇查找判断单元的判断的结果都为是时,累加查找的簇的个数;
所述内容恢复单元,具体用于检测所述累加查找到的空闲簇的个数是否等于或大于当前被删除文件的占用簇的个数。
实施本发明的技术方案,具有以下有益效果:本发明提供的FAT文件系统中被删除文件的恢复方法及装置,在当前被删除文件的恢复中,通过去掉被别的被删除文件占用的空闲簇,排除掉不属于当前被删除文件的内容的空闲簇,使得当前被删除文件的恢复更精确。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种FAT文件系统中被删除文件的恢复方法,其核心思想是:在目录中读取当前被删除文件的首簇、大小和创建时间;根据所述文件的大小获取该当前被删除文件的占用簇,所述占用簇的数量为N;在所述FAT文件系统的FAT表中,从所述当前被删除文件的首簇开始查找到N个空闲簇,并将所述N个空闲簇中的已经被别的被删除文件占用的空闲簇的内容重写到另一个盘中,其中:所述别的被删除文件的创建时间在所述当前被删除文件之后,所有查找过的簇为查找簇。以通过去掉被别的被删除文件占用的空闲簇,排除掉不属于当前被删除文件的内容的空闲簇,使得当前被删除文件的恢复更精确。
本发明实施例提供一种FAT文件系统中被删除文件的恢复方法,如图1所示,该方法包括步骤:
S110、在FAT文件系统的目录中读取当前被删除文件的首簇、大小和创建时间;
S120、根据所述文件的大小获取该当前被删除文件的占用簇的个数;
在该步骤S120中,设所述占用簇的数量为N,N为自然数。
S130、以所述当前被删除文件的首簇为当前簇,在所述FAT文件系统的FAT表中从当前簇开始找下一簇,判断该簇是否为空闲簇,判断该簇是否为别的被删除文件的首簇,判断别的被删除文件的创建时间是否在所述当前被删除文件的创建时间之后;
具体地,当上述判断结果都为是时,以该簇为FAT表中的当前簇,执行步骤S130;否则,执行步骤S140。
S140、记录下该簇的位置,并累加查找的簇的个数;
需要说明的是,本实施例中当步骤S130的判断结果都为是时,不进行查找的簇的个数的累加;
S150、检测所述累加查找到的空闲簇的个数是否等于当前被删除文件的占用簇的个数;
具体地,当检测结果为否时,以该簇为FAT表中的当前簇,执行步骤S130;否则,执行步骤S160。
S160、读取上述记录的簇的内容,并将所述内容重写到其他存储器中。
下面结合图2中的例子,对图1中的实施例进行进一步地说明:
如图2所示,是从FAT表查找到的一个被删除文件ASD.doc(假设文件大小为13KB,每簇的大小为2KB,共占用七个簇,即N=7)所占用簇的位置示意图,其首簇为100簇,从其后面连续六个簇均为其原来占用的簇的位置,向后连续读取,其中101簇为空闲簇,去FAT表中查找到该空闲簇为文件EFG.txt的首簇(其删除之后被清零),文件EFG.txt(该文件大小只有1KB,只占用一个簇)的创建时间在ASD.doc之后,此时则跳过101簇(不将其记录在内),也不累计查找的簇的个数,直接向后读取102簇,其为空闲簇,但不是其它文件的首簇,将其记录在内,并累计查找的簇的个数为2(首簇为第1个查找的簇的个数,102簇为第2个查找的簇的个数),检测到没有等于N=7时;继续读取103簇,103簇不是空闲簇,将其记录在内,并累计查找的簇的个数为3,检测到没有等于N=7时;继续读取104簇;104簇为空闲簇,从FAT表中查找到该空闲簇为文件RST.doc的首簇(其删除之后被清零),此时则跳过104簇(不将其记录在内),也不累计查找的簇的个数,向后读取105簇,其为占用簇,将其记录在内,并累计查找的簇的个数为4,检测到没有等于N=7时;继续读取106簇下去,直到最后累计查找的簇的个数等于当前删除文件的占用簇的数量N=7,那么就将记录在内的100簇、102簇、103簇和105簇等等共7个簇,一起转存至其它磁盘中,将其恢复为文件。由于该恢复过程中,将被创建时间在当前需要恢复的被删除文件之后的文件占用的簇(本实施例中被其它文件占用的簇为101簇和104簇)从中去掉了,提高了被恢复文件内容的正确比例,大大地提高了恢复文件的几率。
再进一步地,本发明实施例中,步骤S120之后还可以包括:判断所述占用簇的个数是否大于1,若不大于1,则读取所述被删除文件的首簇的内容,并将所述内容重写到其他存储器中,结束流程;若大于1,则执行步骤S130。
下面结合图3详细说明本发明另一个实施例,包括如下步骤:
S310、在FAT文件系统的目录中读取当前被删除文件的首簇、大小和创建时间;
S320、根据所述文件的大小获取该当前被删除文件的占用簇的个数;
在该步骤S120中,设所述占用簇的数量为N,N为自然数。
S330、以所述当前被删除文件的首簇为当前簇,在所述FAT文件系统的FAT表中从当前簇开始找下一簇,判断该簇是否为空闲簇,判断该簇是否为别的被删除文件的首簇,判断别的被删除文件的创建时间是否在所述当前被删除文件的创建时间之后;
具体地,当上述判断结果都为是时,执行步骤S340;否则,执行步骤S350。
S340、累加查找的簇的个数,然后以该簇为FAT表中的当前簇,重复执行S330;
S350、记录下该簇的位置,并累加查找的簇的个数;
S360、检测所述累加查找到的空闲簇的个数是否等于或大于当前被删除文件的占用簇的个数;
具体地,当检测结果为否时,以该簇为FAT表中的当前簇,执行步骤S330;否则,执行步骤S370。
S370、读取上述记录的簇的内容,并将所述内容重写到其他存储器中。
下面同样地,结合图2中的例子,对图3中的实施例进行进一步地说明:
如图2所示,是从FAT表查找到的一个被删除文件ASD.doc(假设文件大小为13KB,每簇的大小为2KB,共占用七个簇,即N=7)所占用簇的位置示意图,其首簇为100簇,从其后面连续六个簇均为其原来占用的簇的位置,向后连续读取,其中101簇为空闲簇,去FAT表中查找到该空闲簇为文件EFG.txt的首簇(其删除之后被清零),文件EFG.txt(该文件大小只有1KB,只占用一个簇)的创建时间在ASD.doc之后,此时则跳过101簇(不将其记录在内),同时累计查找的簇的个数为2(首簇为第1个查找的簇的个数,101簇为第2个查找的簇的个数),然后向后读取102簇,其为空闲簇,但不是其它文件的首簇,将其记录在内,并累计查找的簇的个数为3,检测到没有等于N=7时;继续读取103簇,103簇不是空闲簇,将其记录在内,并累计查找的簇的个数为4,检测到没有等于N=7时;继续读取104簇;104簇为空闲簇,从FAT表中查找到该空闲簇为文件RST.doc的首簇(其删除之后被清零),此时则跳过104簇(不将其记录在内),同时累计查找的簇的个数为5,然后向后读取105簇,其为占用簇,将其记录在内,并累计查找的簇的个数为6,检测到没有等于N=7时;继续读取106簇下去,直到最后累计查找的簇的个数等于或大于(由于不记录在内的簇也要累计查找的簇的个数,但是不经过检测,因此有可能存在大于的情况)当前删除文件的占用簇的数量N=7,那么就将记录在内的100簇、102簇、103簇和105簇等等共7个簇,一起转存至其它磁盘中,将其恢复为文件。由于该恢复过程中,将被创建时间在当前需要恢复的被删除文件之后的文件占用的簇(本实施例中被其它文件占用的簇为101簇和104簇)从中去掉了,提高了被恢复文件内容的正确比例,大大地提高了恢复文件的几率。
需要说明的是,本发明所有实施例中所述判断该簇是否为空闲簇,判断该簇是否为别的被删除文件的首簇,判断别的被删除文件的创建时间是否在所述当前被删除文件的创建时间之后的步骤是有先后顺序的,具体包括:
判断该簇是否为空闲簇,当判断结果为是时,判断该簇是否为别的被删除文件的首簇,当判断结果为是时,判断所述别的被删除文件的创建时间是否在所述当前被删除文件的创建时间之后。
还需要说明的是,本发明所有实施例中所述判断该簇是否为别的被删除文件的首簇的步骤具体包括:从FAT表中查找该簇是否被别的被删除文件占用过,当查找为是时,则判断出该簇为别的被删除文件的首簇;否则,判断出该簇不为别的被删除文件的首簇。
作为本发明的另外一种实施方式,在查找簇的过程中,查找到一个空闲簇为创建时间在当前文件之后的其它文件的首簇时,而且这个其它文件的文件大小较大时,可以直接跳过这个其它文件所占用的簇,即增加了设定阈值进行判断的步骤,比如设定阈值为150,当这个其它文件占用200簇,判断出超过了阈值150,那么恢复当前文件时,就从这个其它文件的首簇开始,跳过200簇之后再进行查找。以提高恢复文件的速度和效率。当用于大量数据文件的恢复时,可以采用这种方式。
作为本发明的又一实施方式,在查找过程中,可以先查找一下首簇之后的空闲簇有多少个,然后只对空闲簇逐个进行判断是否为其它文件(创建时间在当前文件之后)的首簇,空闲簇判断完之后连续读取占用簇(存有被删除文件的内容),一并转存至其它磁盘中进行恢复。
若当前需要恢复的文件十分重要,可以采用多种变形的恢复方法,分别将它们恢复为不同的文件,用户可以根据不同的恢复文件进行组合判断。比如同样恢复一个名称为adc.txt的文件,第一次恢复时,发现其中有一个空闲簇为一个占用5个簇的123.txt的首簇,且文件123.txt的创建时间在文件adc.txt之后,第一恢复时,只跳过123.txt的首簇,后面仍然逐一判断;第二恢复时,可以直接跳过文件adc.txt的首簇之后连续五个簇。将这二个恢复文件同时提供给用户,为用户多提供一种选择的机会。这些适合为那种连续性很强的文件恢复,因为用户可以根据文件的各个部分内容,可以重新组合起来。
本发明提供的FAT文件系统中被删除文件的恢复方法,在当前被删除文件的恢复中,通过去掉被别的被删除文件占用的空闲簇,排除掉不属于当前被删除文件的内容的空闲簇,使得当前被删除文件的恢复更精确。
本发明实施例还提供一种FAT文件系统中被删除文件的恢复装置,该装置可以为计算机、手机等具有FAT文件系统的电子设备,如图4所示,该装置包括:
信息读取单元210,用于在FAT文件系统的目录中读取当前被删除文件的首簇、大小和创建时间;
占用簇数获取单元220,用于根据所述文件的大小获取该当前被删除文件的占用簇的个数;
空闲簇查找判断单元230,用于以所述当前被删除文件的首簇为当前簇,在所述FAT文件系统的FAT表中从当前簇开始找下一簇,判断该簇是否为空闲簇,判断该簇是否为别的被删除文件的首簇,判断别的被删除文件的创建时间是否在所述当前被删除文件的创建时间之后;
结果执行单元240,用于当所述判断的结果都为是时,触发空闲簇查找判断单元230以该簇为FAT表中的当前簇,执行所述在所述FAT文件系统的FAT表中从当前簇开始找下一簇的步骤;否则,记录下该簇的位置,并累加查找的簇的个数;
内容恢复单元250,用于检测所述累加查找到的簇的个数是否等于当前被删除文件的占用簇的个数,当检测结果为否时,触发空闲簇查找判断单元230以该簇为FAT表中的当前簇,执行所述在所述FAT文件系统的FAT表中从当前簇开始找下一簇的步骤;当检测结果为是时,读取上述记录的簇的内容,并将所述内容重写到其他存储器中。
在其他实施例中,进一步的,如图5所示,所述的装置还包括:
占用簇判断单元260,用于在占用簇数获取单元220根据所述文件的大小获取该当前被删除文件的占用簇的个数之后,判断所述占用簇的个数是否大于1,若不大于1,则读取所述被删除文件的首簇的内容,具体地读取所述被删除文件的首簇的内容,重写到其他存储器中;并将所述内容重写到其他存储器中;若大于1,则触发空闲簇查找判断单元230执行操作。
在其他实施例中,更为具体的,所述空闲簇查找判断单元230,具体用于判断该簇是否为空闲簇,当判断结果为是时,判断该簇是否为别的被删除文件的首簇,当判断结果为是时,判断所述别的被删除文件的创建时间是否在所述当前被删除文件的创建时间之后。
在更为具体的实施例中,所述空闲簇查找判断单元230,具体用于:从FAT表中查找该簇是否被别的被删除文件占用过,当查找为是时,则判断出该簇为别的被删除文件的首簇;否则,判断出该簇不为别的被删除文件的首簇。
在其他的实施例中,进一步的,
所述结果执行单元240,还用于在空闲簇查找判断单元230的判断的结果都为是时,累加查找的簇的个数;
所述内容恢复单元250,具体用于检测所述累加查找到的空闲簇的个数是否等于或大于当前被删除文件的占用簇的个数。
本发明提供的FAT文件系统中被删除文件的恢复装置,在当前被删除文件的恢复中,通过去掉被别的被删除文件占用的空闲簇,排除掉不属于当前被删除文件的内容的空闲簇,使得当前被删除文件的恢复更精确。
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。