ycb01010522 发表于 2007-8-28 08:14:15

如何判断一个文件的起始位置与结束呢

用Winhex软件时,怎么判断一个文件的起始位置与结束位置..

还有,如何恢复被格式化过的数据呢,

ycb01010522 发表于 2007-8-28 09:06:38

找到了关于文件头的标识,,

那怎么来确定文件结束的位置呢,

小小 发表于 2007-8-28 20:23:53

一、扇区分簇管理            
操作系统或应用程序欲将数据写入一个磁盘文件时,必须在磁盘上找到可以使用的未用扇区。反过来要将数据从磁盘文件中读出时,也要在磁盘上找到已经储存了相应数据的有关扇区,要查找扇区必须知道扇区的地址,文件分配表FAT就是记录扇区地址的。
    因为硬盘的扇区非常多,如果将每个扇区的地址都记录在文件分配表里,势必造成文件分配表体积庞大,查找时效率将会很低。为解决这个问题,采用了将扇区分组管理的方法。分组的过程称作扇区分簇,是由高级格式化程序在格式化磁盘时完成的。
    扇区分簇以后,将每个簇的地址记录到文件分配表FAT里去。由于一个簇包含很多扇区,所以文件分配表的体积减小了,查找的速度就提高了。
    一个簇能包含多少扇区,是由分区格式和分区的大小决定的。
二、簇链和文件检索过程
    当使用一个新格式化的逻辑驱动器时,文件数据存放的簇号是连续的,使用一段时间后,由于经常对文件进行删除、复制和修改操作,每个文件分配的簇号就不一定是连续的了。为了确保在存取文件时能够检索到所有连续或不连续的扇区地址,文件分配表采用了“簇链”的记录方式。
   当需要从磁盘上读取一个文件时,首先从文件目录表中找到该文件的目录登记项。继而从目录登记项的有关字段,查到分配给该文件的第一个簇号,根据第一簇号的内容可以计算出两组数据。
   其中一组数据指出了文件在数据区DATA里的第一簇扇区首地址,从第一簇扇区首地址开始数据是连续存放的,连续存放多少个扇区由分区格式和分区大小决定。
   另外一组数据指出了FAT表内簇登记项的地址,如果其值是结束标志FFFFFF0FH(FAT32格式),说明文件至此已经结束。如果不是结束标志,则该登记项的值为第二个簇号,据此又可以计算出两组数据,继而确定文件在数据区里第二簇扇区首地址和FAT表内的第二个簇登记项的地址。
    继续重复上面的过程,就可以得到文件在DATA区里的全部数据,以及文件在FAT所有簇登记项的地址。

qydwjzk 发表于 2007-8-29 21:51:11

同意楼上

ycb01010522 发表于 2007-9-1 09:56:45

有点不能理解,可不可以举个例子呢

wzjgfp 发表于 2007-9-27 06:52:40

同感...有例子就会形象一点

ycb01010522 发表于 2007-9-27 09:47:21

已经解决,谢谢各位的回复,,

hddwumnm 发表于 2008-8-1 23:16:39

e_cfj 发表于 2009-6-13 09:35:32

1# ycb01010522


我也想知道,FAT32是怎么定位文件的

lu_yunkui 发表于 2009-6-14 20:58:50

还是有点不太清楚!
页: [1] 2
查看完整版本: 如何判断一个文件的起始位置与结束呢