相同不说了,如果不相同,也应该相差不多。计算一下相差的簇的数目,然后在本分区dbr扇区的0eh~0fh作相应增减,是保留扇区的数目回到原来的数目。重起一下计算机,是新的dbr生效,清空现fat表(根目录簇可以不清空,因后边讲到会覆盖的)。文件目录项的映射与实际地址便正确的结合了。(不明白吗?想想原理,努力消化一下)
接着将找到的簇复制----〉定位到现在的根目录----〉写入。
打开“资源管理器“,浏览,出来了吗?
慢!还没完,现在的目录结构是出来了,但还不能访问,因为fat表所记录的簇还是空闲的。怎么办?手动写,算一下,可能写完得30年吧!呵呵!哪。。。。,其实,如果要恢复的文件大小都在1簇范围内,可在win98下运行磁盘扫描程序,在出现修复的提示时选相应的选象修复即可(别选“删除涉及到的文件”选项,另外,win2000下不行,扫描程序会直接删除文件的)。这样,大小在1簇范围的文件别完全恢复了(包括文件)。那如何在这种情况下恢复大于1个簇的文件呢?一是你可以写一个小的程序来实现涉及到的簇的连续。如果你不会,那么也不难,得一个一个文件的来。打开winhex,使用它的目录模板跳转到文件的存储区,从当前簇复制大小为文件大小的一块连续数据,写入新文件中(记得写在其他分区中),即可!当然,如果簇数较少,可直接在fat1中改动。
另外,这样恢复的文件也不一定正确。要看当初文件的存储是否连续了?如果恢复后的文件不能用,那。。。。听天由命吧!!!(要么你在磁盘中在查找,分析,自己把它连接起来。不过,工作量吗?。。。)
这样恢复的是以前一个子目录的数据。如果有多个目录的数据要恢复,可用同样的方法替换根目录(第一个数据簇),也可以采用手动建立根目录的方法,不过,别在资源管理器中进行,手动在winhex中做吧!还有,要是恢复的目录中有多个簇,再用同样的方法,查找,作为根目录。
这是分区格式为fat32的情况,如fat16则不需考虑保留扇区的数目情况,fat16无保留扇区。
这是有目录项的情况。
再来说一下在无目录项参照的情况:
以下默认为欲恢复文件是存储在FAT32文件格式当中的文件。
本帖隐藏的内容需要回复才可以浏览
。。。